From bf94e578ebb459ef3fa094353c86e84ed5d076e9 Mon Sep 17 00:00:00 2001 From: "Roberto Gomes, PhD" <88116667+rgaveiga@users.noreply.github.com> Date: Tue, 25 Jun 2024 16:10:00 -0300 Subject: [PATCH] Fix ttm issue (#24) * Update version in pyproject.toml * Add 1 day to data.days_to_target to account for the expiration day * Add 1 day to data._days_to_maturity to account for the expiration day * Update test_core.py * Update .gitignore * Update models.py * Update calendar_spread.ipynb, .gitignore, CHANGELOG.md, poetry.lock and pyproject.toml * Add 1 to `time_to_target` and `time_to_maturity` in `engine.py` * Update Jupyter notebooks, replacing the `StrategyEngine` class by the `run_strategy()` function * Update CHANGELOG.md * Black files in `tests` * Black `engine.py`, `models.py` and `support.py` * Update CHANGELOG.md * Change variable `project_target_ranges` in `models.py` and `engines.py` to `profit_target_ranges` * Black again `engine.py` * Update version in `__init__.py` --- .gitignore | 5 +- CHANGELOG.md | 13 +- examples/calendar_spread.ipynb | 56 +- examples/call_spread.ipynb | 150 +-- examples/covered_call.ipynb | 85 +- examples/naked_call.ipynb | 67 +- examples/pop_calculator.ipynb | 51 +- optionlab/__init__.py | 2 +- optionlab/engine.py | 19 +- optionlab/models.py | 8 +- optionlab/support.py | 1 - poetry.lock | 1907 ++++++++++++++++++++++++++++++-- pyproject.toml | 3 +- tests/test_core.py | 69 +- tests/test_misc.py | 1 - tests/test_models.py | 2 - 16 files changed, 2124 insertions(+), 315 deletions(-) diff --git a/.gitignore b/.gitignore index 7773828..4a6a9b0 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ -dist/ \ No newline at end of file +dist/ +__pycache__ +run_*.py +.ipynb_checkpoints \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index e4215b1..8cd7174 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,20 @@ # CHANGELOG +## 1.2.1 (2024-06-03) + +- Add 1 to `time_to_target` and `time_to_maturity` in `engine.py` to consider the target and expiration dates as trading days in the calculations +- Change Jupyter notebooks in the `examples` directory to utilize the `run_strategy()` function for performing options strategy calculations, instead of using the `StrategyEngine` class (deprecated) +- Correct the PoP Calculator notebook +- Change the name of variable `project_target_ranges` in `models.py` and `engine.py` to `profit_target_ranges` + ## 1.2.0 (2024-03-31) -- Add functions to run engine +- Add functions to run engine. ## 1.1.0 (2024-03-24) -- Refactor the engine's `run` method for readability. -- Accept dictionary of inputs to `StratgyEngine` init. +- Refactor the engine's `run` method for readability +- Accept dictionary of inputs to `StratgyEngine` init ## 1.0.1 (2024-03-18) diff --git a/examples/calendar_spread.ipynb b/examples/calendar_spread.ipynb index 43da55e..fed6171 100644 --- a/examples/calendar_spread.ipynb +++ b/examples/calendar_spread.ipynb @@ -27,7 +27,7 @@ "import datetime as dt\n", "import sys\n", "\n", - "from optionlab import Inputs, VERSION, StrategyEngine, plot_pl\n", + "from optionlab import VERSION, run_strategy, plot_pl\n", "\n", "%matplotlib inline" ] @@ -46,8 +46,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Python version: 3.10.13 (main, Aug 24 2023, 12:59:26) [Clang 15.0.0 (clang-1500.0.40.1)]\n", - "OptionLab version: 0.1.7\n" + "Python version: 3.11.7 | packaged by Anaconda, Inc. | (main, Dec 15 2023, 18:05:47) [MSC v.1916 64 bit (AMD64)]\n", + "OptionLab version: 1.2.0\n" ] } ], @@ -65,7 +65,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2024-03-15T17:48:35.828897Z", @@ -93,23 +93,21 @@ " },\n", "]\n", "\n", - "inputs = Inputs(\n", - " stock_price=stockprice,\n", - " start_date=startdate,\n", - " target_date=targetdate,\n", - " volatility=volatility,\n", - " interest_rate=interestrate,\n", - " min_stock=minstock,\n", - " max_stock=maxstock,\n", - " strategy=strategy,\n", - ")\n", - "\n", - "st = StrategyEngine(inputs)" + "inputs = {\n", + " \"stock_price\": stockprice,\n", + " \"start_date\": startdate,\n", + " \"target_date\": targetdate,\n", + " \"volatility\": volatility,\n", + " \"interest_rate\": interestrate,\n", + " \"min_stock\": minstock,\n", + " \"max_stock\": maxstock,\n", + " \"strategy\": strategy,\n", + "}" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2024-03-12T13:22:23.858251Z", @@ -121,14 +119,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 3.41 ms, sys: 1.4 ms, total: 4.81 ms\n", - "Wall time: 4.38 ms\n" + "CPU times: total: 109 ms\n", + "Wall time: 357 ms\n" ] } ], "source": [ "%%time\n", - "out = st.run()" + "out = run_strategy(inputs)" ] }, { @@ -140,7 +138,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2024-03-12T13:22:31.185260Z", @@ -159,8 +157,10 @@ }, { "data": { - "text/plain": "
", - "image/png": "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" + "image/png": "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", + "text/plain": [ + "
" + ] }, "metadata": {}, "output_type": "display_data" @@ -179,7 +179,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2024-03-12T13:22:34.374344Z", @@ -191,18 +191,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "Days remaining to the target date: 8\n", "Strategy cost: -1300.00\n", "Maximum loss: 1300.00\n", "Maximum profit: 3010.00\n", "Profitable stock price range:\n", " 118.87 ---> 136.15\n", - "Probability of Profit (PoP): 62.7%\n" + "Probability of Profit (PoP): 59.9%\n" ] } ], "source": [ - "print(\"Days remaining to the target date: %d\" % st.days2target)\n", "print(\"Strategy cost: %.2f\" % out.strategy_cost)\n", "print(\"Maximum loss: %.2f\" % abs(out.minimum_return_in_the_domain))\n", "print(\"Maximum profit: %.2f\" % out.maximum_return_in_the_domain)\n", @@ -225,7 +223,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -239,7 +237,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.11.7" } }, "nbformat": 4, diff --git a/examples/call_spread.ipynb b/examples/call_spread.ipynb index 0b581a0..e3dd613 100644 --- a/examples/call_spread.ipynb +++ b/examples/call_spread.ipynb @@ -36,7 +36,7 @@ "import pandas as pd\n", "from numpy import zeros\n", "\n", - "from optionlab import Inputs, StrategyEngine\n", + "from optionlab import Inputs, run_strategy\n", "\n", "%matplotlib inline" ] @@ -63,7 +63,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:12:57.784183Z", @@ -92,7 +92,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:12:59.278523Z", @@ -141,8 +141,7 @@ " strategy=strategy,\n", " )\n", "\n", - " st = StrategyEngine(inputs)\n", - " out = st.run()\n", + " out = run_strategy(inputs)\n", "\n", " if maxpop < out.probability_of_profit:\n", " maxpop = out.probability_of_profit\n", @@ -153,7 +152,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:13:06.993843Z", @@ -165,8 +164,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 3.59 s, sys: 397 ms, total: 3.99 s\n", - "Wall time: 4.14 s\n" + "CPU times: total: 11.8 s\n", + "Wall time: 16.4 s\n" ] } ], @@ -177,7 +176,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:13:10.575361Z", @@ -199,7 +198,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:13:59.732189Z", @@ -208,25 +207,23 @@ }, "outputs": [], "source": [ - "st = StrategyEngine(\n", - " Inputs(\n", - " stock_price=stockprice,\n", - " start_date=startdate,\n", - " target_date=targetdate,\n", - " volatility=volatility,\n", - " interest_rate=interestrate,\n", - " min_stock=minstock,\n", - " max_stock=maxstock,\n", - " strategy=best_strategy,\n", - " )\n", + "inputs = Inputs(\n", + " stock_price=stockprice,\n", + " start_date=startdate,\n", + " target_date=targetdate,\n", + " volatility=volatility,\n", + " interest_rate=interestrate,\n", + " min_stock=minstock,\n", + " max_stock=maxstock,\n", + " strategy=best_strategy,\n", ")\n", "\n", - "out = st.run()" + "out = run_strategy(inputs)" ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:15:00.425508Z", @@ -238,18 +235,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "Days remaining to the target date: 18\n", "Strategy cost: -15995.00\n", "Maximum loss: 15995.00\n", "Maximum profit: 5.00\n", "Profitable stock price range:\n", " 304.96 ---> inf\n", - "Probability of Profit (PoP): 99.2%\n" + "Probability of Profit (PoP): 99.1%\n" ] } ], "source": [ - "print(\"Days remaining to the target date: %d\" % st.days2target)\n", "print(\"Strategy cost: %.2f\" % out.strategy_cost)\n", "print(\"Maximum loss: %.2f\" % abs(out.minimum_return_in_the_domain))\n", "print(\"Maximum profit: %.2f\" % out.maximum_return_in_the_domain)\n", @@ -263,7 +258,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:15:17.818384Z", @@ -273,23 +268,27 @@ "outputs": [ { "data": { - "text/plain": "[]" + "text/plain": [ + "[]" + ] }, - "execution_count": 10, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { - "text/plain": "
", - "image/png": "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" + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmYAAAGwCAYAAAADo6klAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABVZ0lEQVR4nO3de1RU9eI28Ge4zAAqt0RGEVCO97zmhcbSUsmxOCVqamYdVCwvaCIoQpba+eUBwRsZUf5cr2QnT6idLC9HI1AyRU3Mu1iWhSUXSZhRuTPf9w9f9uscUAEZ9szwfNaadc7s/Z3Ns9lL5uk7e+9RCCEEiIiIiEh2NnIHICIiIqI7WMyIiIiIzASLGREREZGZYDEjIiIiMhMsZkRERERmgsWMiIiIyEywmBERERGZCTu5A7RUBoMB165dQ5s2baBQKOSOQ0RERPUghMDNmzfRoUMH2Ng0/fwWi5lMrl27Bm9vb7ljEBERUSNcvXoVHTt2bPLtspjJpE2bNgDuHFhnZ2eZ0xAREVF96PV6eHt7S+/jTY3FTCY1H186OzuzmBEREVkYU52GxJP/iYiIiMwEixkRERGRmWAxIyIiIjITLGZEREREZoLFjIiIiMhMsJgRERERmQkWMyIiIiIzwWJGREREZCZYzIiIiIjMBIsZERERkZlgMXsIiYmJ6NSpExwcHODv74/jx4/LHYmIiIgsGItZI6WkpCA8PBzLly/HyZMn0a9fP2i1WhQUFMgdjYiIiCyUQggh5A5hifz9/TF48GC8//77AACDwQBvb2/Mnz8fUVFRD3y9Xq+Hi4sLiv4s4peYE5HFKCwsxO3bt+WOQSSbmzdvot+AftDpdCZ5/7Zr8i22ABUVFcjKykJ0dLS0zMbGBgEBAcjMzKzzNeXl5SgvL5ee6/V6AMDhRw6jFVqZNjARURPIQAZWYIXcMYisGotZIxQWFqK6uhqenp5Gyz09PZGdnV3na2JiYvDOO+80RzwioiZngAH/B/8HAGAHO9jwTBhqoQQEKlFpsu2zmDWT6OhohIeHS8/1ej28vb3x+JXH+VEmEZm9L3Z9gZxpOXB1ccXlU5f5d4taLL1ej7ad25ps+yxmjdC2bVvY2toiPz/faHl+fj7UanWdr1GpVFCpVLWW27vbw97Z3iQ5iYiaghAC8e/HAwBC54XikU6PyJyISD72dqZ9z+ZcdCMolUoMHDgQaWlp0jKDwYC0tDRoNBoZkxERNb20tDScOHECjo6OWLBggdxxiKwaZ8waKTw8HMHBwRg0aBCGDBmC9evX4/bt25g+fbrc0YiImlRMTAwAYObMmfDw8JA5DZF1YzFrpMmTJ+P69etYtmwZ8vLy0L9/f+zbt6/WBQFERJbs+PHjSE9Ph52dHRYtWiR3HCKrx2L2EObNm4d58+bJHYOIyGRqZsumTp0KHx8fmdMQWT+eY0ZERHW6cOECdu7cCYVCgSVLlsgdh6hFYDEjIqI6rVq1CgAQFBSEnj17ypyGqGVgMSMiolp+++03bN26FQCMvuWEiEyLxYyIiGpZvXo1qqqqMGrUKAwePFjuOEQtBosZEREZKSgowKZNmwBwtoyoubGYERGRkYSEBJSVlWHw4MEYOXKk3HGIWhQWMyIikuj1eiQmJgK4M1umUChkTkTUsrCYERGRJCkpCTqdDj179sTYsWPljkPU4rCYERERAKC0tBTr1q0DACxZsgQ2NnyLIGpu/FdHREQAgOTkZOTn58PHxwcvv/yy3HGIWiQWMyIiQlVVFeLj4wEAixYtgr29vcyJiFomFjMiIkJKSgquXLkCDw8PhISEyB2HqMViMSMiauEMBgNiY2MBAAsWLICTk5PMiYhaLhYzIqIWbs+ePTh37hzatGmD0NBQueMQtWgsZkRELZgQAjExMQCAOXPmwNXVVd5ARC0cixkRUQv27bffIjMzEyqVCgsXLpQ7DlGLx2JGRNSC1cyWTZ8+HWq1WuY0RMRiRkTUQp08eRL79++HjY0NFi9eLHccIgKLGRFRi1VzJeZLL70EPz8/mdMQEcBiRkTUIv3444/YsWMHACAqKkrmNERUg8WMiKgFiouLgxACf/3rX9GnTx+54xDR/8NiRkTUwvz+++/YsmULACA6OlrmNER0NxYzIqIWZu3ataisrMTw4cMxdOhQueMQ0V1YzIiIWpA///wTGzduBMDZMiJzxGJGRNSCbNiwAbdv38aAAQOg1WrljkNE/4XFjIiohbh16xbee+89AHeuxFQoFDInIqL/xmJGRNRCbNy4EUVFRejatSsmTJggdxwiqgOLGRFRC1BeXo41a9YAACIjI2FraytzIiKqC4sZEVELsGXLFly7dg0dOnTAq6++KnccIroHFjMiIitXXV2NuLg4AMCiRYugUqlkTkRE98JiRkRk5Xbs2IHLly/D3d0dr732mtxxiOg+rKaY/frrrwgJCUHnzp3h6OiIv/zlL1i+fDkqKiqMxp05cwbDhg2Dg4MDvL29pf+KvNv27dvRo0cPODg4oE+fPti7d6/ReiEEli1bhvbt28PR0REBAQH46aefTLp/RESNIYRATEwMAOCNN95A69atZU5ERPdjNcUsOzsbBoMBH330Ec6fP49169bhww8/xJtvvimN0ev1GD16NHx9fZGVlYX4+HisWLFCutkiABw5cgRTpkxBSEgIfvjhBwQFBSEoKAjnzp2TxsTFxeG9997Dhx9+iGPHjqFVq1bQarUoKytr1n0mInqQffv24fTp02jVqhXmz58vdxwiehBhxeLi4kTnzp2l5x988IFwc3MT5eXl0rIlS5aI7t27S88nTZokAgMDjbbj7+8vZs2aJYQQwmAwCLVaLeLj46X1xcXFQqVSiX/961/1zqbT6QQAodPpGrxfRET1NWzYMAFAhIeHyx2FyCqY+v3bambM6qLT6eDu7i49z8zMxPDhw6FUKqVlWq0Wly5dQlFRkTQmICDAaDtarRaZmZkAgCtXriAvL89ojIuLC/z9/aUxdSkvL4derzd6EBGZ0uHDh3Ho0CHY29sjPDxc7jhEVA9WW8wuX76MDRs2YNasWdKyvLw8eHp6Go2reZ6Xl3ffMXevv/t1dY2pS0xMDFxcXKSHt7d3I/eMiKh+as4tCw4OhpeXl8xpiKg+zL6Y1XxtyP0e2dnZRq/5448/MGbMGEycONFsrkCKjo6GTqeTHlevXpU7EhFZsTNnzmDPnj2wsbFBZGSk3HGIqJ7s5A7wIBEREZg2bdp9x/j5+Un//9q1axgxYgSGDh1qdFI/AKjVauTn5xstq3muVqvvO+bu9TXL2rdvbzSmf//+98yoUql47yAiajaxsbEAgBdffBFdu3aVOQ0R1ZfZFzMPDw94eHjUa+wff/yBESNGYODAgdi8eTNsbIwnBDUaDZYuXYrKykrY29sDAFJTU9G9e3e4ublJY9LS0hAWFia9LjU1FRqNBgDQuXNnqNVqpKWlSUVMr9fj2LFjmDNnzkPuLRHRw/v555+RkpIC4M6nDkRkOcz+o8z6+uOPP/D000/Dx8cHq1evxvXr15GXl2d03tfLL78MpVKJkJAQnD9/HikpKUhISDA6KXbBggXYt28f1qxZg+zsbKxYsQInTpzAvHnzAAAKhQJhYWF499138dVXX+Hs2bP429/+hg4dOiAoKKi5d5uIqJb4+HgYDAaMGTMGAwYMkDsOETWESa71lMHmzZsFgDofdzt9+rR48sknhUqlEl5eXiI2NrbWtrZt2ya6desmlEqlePTRR8WePXuM1hsMBvH2228LT09PoVKpxKhRo8SlS5calJe3yyAiU7h27ZpQKpUCgMjIyJA7DpHVMfX7t0IIIWRrhS2YXq+Hi4sLdDodnJ2d5Y5DRFYiMjIS8fHxGDp0KL777jsoFAq5IxFZFVO/f1vNR5lERC1dUVERkpKSANy5EpyljMjysJgREVmJxMRE3Lp1C3369EFgYKDccYioEVjMiIisQElJCRISEgD8//s/EpHlYTEjIrICmzZtQmFhIfz8/DBp0iS54xBRI7GYERFZuIqKCqxevRoAsHjxYtjZmf0tKonoHljMiIgs3NatW3H16lWo1eoHflMKEZk3FjMiIgtmMBiwatUqAMDChQvh4OAgcyIiehgsZkREFmznzp3Izs6Gq6srZs+eLXccInpILGZERBZKCIGYmBgAQGhoKG9WTWQFWMyIiCxUWloaTpw4AUdHRyxYsEDuOETUBFjMiIgsVM1s2cyZM+Hh4SFzGiJqCixmREQW6Pjx40hPT4ednR0WLVokdxwiaiIsZkREFqhmtmzq1Knw8fGROQ0RNRUWMyIiC3PhwgXs3LkTCoUCS5YskTsOETUhFjMiIgtTc9+yoKAg9OzZU+Y0RNSUWMyIiCzIb7/9hq1btwIAoqOjZU5DRE2NxYyIyIKsXr0aVVVVGDVqFAYPHix3HCJqYixmREQWoqCgAJs2bQLA2TIia8ViRkRkIRISElBWVobBgwdj5MiRcschIhNgMSMisgB6vR6JiYkA7syWKRQKmRMRkSmwmBERWYCkpCTodDr07NkTY8eOlTsOEZkIixkRkZkrLS3FunXrAABLliyBjQ3/dBNZK/7rJiIyc8nJycjPz4ePjw9efvllueMQkQmxmBERmbGqqirEx8cDABYtWgR7e3uZExGRKbGYERGZsZSUFFy5cgUeHh4ICQmROw4RmRiLGRGRmTIYDIiNjQUALFiwAE5OTjInIiJTYzEjIjJTe/bswblz59CmTRuEhobKHYeImgGLGRGRGRJCICYmBgAwZ84cuLq6yhuIiJoFixkRkRn69ttvkZmZCZVKhYULF8odh4iaCYsZEZEZqpktmz59OtRqtcxpiKi5sJgREZmZkydPYv/+/bCxscHixYvljkNEzcgqi1l5eTn69+8PhUKBU6dOGa07c+YMhg0bBgcHB3h7eyMuLq7W67dv344ePXrAwcEBffr0wd69e43WCyGwbNkytG/fHo6OjggICMBPP/1kyl0iohak5krMl156CX5+fjKnIaLmZJXFLDIyEh06dKi1XK/XY/To0fD19UVWVhbi4+OxYsUKbNy4URpz5MgRTJkyBSEhIfjhhx8QFBSEoKAgnDt3ThoTFxeH9957Dx9++CGOHTuGVq1aQavVoqysrFn2j4is148//ogdO3YAAKKiomROQ0TNTliZvXv3ih49eojz588LAOKHH36Q1n3wwQfCzc1NlJeXS8uWLFkiunfvLj2fNGmSCAwMNNqmv7+/mDVrlhBCCIPBINRqtYiPj5fWFxcXC5VKJf71r3/VO6dOpxMAhE6na+guEpEVCwkJEQDEX//6V7mjEFEdTP3+bVUzZvn5+XjttdfwySef1HkjxszMTAwfPhxKpVJaptVqcenSJRQVFUljAgICjF6n1WqRmZkJALhy5Qry8vKMxri4uMDf318aU5fy8nLo9XqjBxHR3X7//Xds2bIFAPDmm2/KnIaI5GA1xUwIgWnTpmH27NkYNGhQnWPy8vLg6elptKzmeV5e3n3H3L3+7tfVNaYuMTExcHFxkR7e3t4N2DsiagnWrFmDyspKPPXUU9BoNHLHISIZmH0xi4qKgkKhuO8jOzsbGzZswM2bNxEdHS135DpFR0dDp9NJj6tXr8odiYjMSGFhoXS+q7n+HSMi07OTO8CDREREYNq0afcd4+fnh/T0dOlmjHcbNGgQpk6dio8//hhqtRr5+flG62ue19wn6F5j7l5fs6x9+/ZGY/r373/PjCqVqlY2IqIaGzZsQElJCQYMGIDRo0fLHYeIZGL2xczDwwMeHh4PHPfee+/h3XfflZ5fu3YNWq0WKSkp8Pf3BwBoNBosXboUlZWVsLe3BwCkpqaie/fucHNzk8akpaUhLCxM2lZqaqr0sULnzp2hVquRlpYmFTG9Xo9jx45hzpw5TbHLRNTC3Lx5Exs2bABwZ7ZMoVDInIiI5GL2xay+fHx8jJ63bt0aAPCXv/wFHTt2BAC8/PLLeOeddxASEoIlS5bg3LlzSEhIwLp166TXLViwAE899RTWrFmDwMBAfPbZZzhx4oT0EYNCoUBYWBjeffdddO3aFZ07d8bbb7+NDh06ICgoqHl2loisysaNG1FUVIRu3bph/PjxcschIhlZTTGrDxcXF3z99dcIDQ3FwIED0bZtWyxbtgyvv/66NGbo0KHYunUr3nrrLbz55pvo2rUrdu7cid69e0tjIiMjcfv2bbz++usoLi7Gk08+iX379sHBwUGO3SIiC1ZeXo61a9cCuPO3xdbWVuZERCQnhRBCyB2iJdLr9XBxcYFOp4Ozs7PccYhIJv/7v/+L119/HV5eXvjll1+MbudDRObH1O/fZn9VJhGRtaqurpa+Fi4iIoKljIhYzIiI5LJjxw5cvnwZ7u7ueO211+SOQ0RmgMWMiEgGQgjExMQAAN544w3pgiUiatlYzIiIZLBv3z6cPn0arVq1wvz58+WOQ0RmgsWMiEgGNbNls2bNgru7u8xpiMhcsJgRETWzw4cP49ChQ7C3t0d4eLjccYjIjLCYERE1s5rZsuDgYHh5ecmchojMCYsZEVEzOnPmDPbs2QMbGxtERkbKHYeIzAyLGRFRM4qNjQUAvPjii+jatavMaYjI3LCYERE1k59//hkpKSkAgKioKJnTEJE5YjEjImom8fHxMBgMGDNmDAYMGCB3HCIyQyxmRETNIDc3F5s3bwYAREdHy5yGiMwVixkRUTNYt24dKioqMHToUAwbNkzuOERkpljMiIhMrKioCElJSQDuzJYpFAqZExGRuWIxIyIyscTERNy6dQt9+vRBYGCg3HGIyIyxmBERmVBJSQkSEhIA3LkSk7NlRHQ/LGZERCa0adMmFBYWws/PD5MmTZI7DhGZORYzIiITqaiowOrVqwEAixcvhp2dncyJiMjcsZgREZnI1q1bcfXqVajVakybNk3uOERkAVjMiIhMwGAwYNWqVQCAhQsXwsHBQeZERGQJWMyIiExg586dyM7OhqurK2bPni13HCKyECxmRERNTAiBmJgYAEBoaCicnZ1lTkREloLFjIioiaWlpeHEiRNwdHTEggUL5I5DRBaExYyIqInVzJbNnDkTHh4eMqchIkvCYkZE1ISOHz+O9PR02NnZYdGiRXLHISILw2JGRNSEambLpk6dCh8fH5nTEJGlYTEjImoiFy5cwM6dO6FQKLBkyRK54xCRBWIxIyJqIjX3LQsKCkLPnj1lTkNElojFjIioCfz222/YunUrACA6OlrmNERkqVjMiIiawOrVq1FVVYVRo0Zh8ODBcschIgvFYkZE9JAKCgqwadMmAJwtI6KHY3XFbM+ePfD394ejoyPc3NwQFBRktD4nJweBgYFwcnJCu3btsHjxYlRVVRmNOXjwIB577DGoVCp06dIFycnJtX5OYmIiOnXqBAcHB/j7++P48eMm3CsiMmcJCQkoKyvD4MGDMXLkSLnjEJEFs6pi9vnnn+PVV1/F9OnTcfr0aRw+fBgvv/yytL66uhqBgYGoqKjAkSNH8PHHHyM5ORnLli2Txly5cgWBgYEYMWIETp06hbCwMMycORP79++XxqSkpCA8PBzLly/HyZMn0a9fP2i1WhQUFDTr/hKR/PR6PRITEwHcmS1TKBQyJyIiiyasRGVlpfDy8hKbNm2655i9e/cKGxsbkZeXJy1LSkoSzs7Oory8XAghRGRkpHj00UeNXjd58mSh1Wql50OGDBGhoaHS8+rqatGhQwcRExNT77w6nU4AEDqdrt6vISLzExsbKwCInj17iurqarnjEJGJmfr922pmzE6ePIk//vgDNjY2GDBgANq3b49nn30W586dk8ZkZmaiT58+8PT0lJZptVro9XqcP39eGhMQEGC0ba1Wi8zMTABARUUFsrKyjMbY2NggICBAGlOX8vJy6PV6owcRWbbS0lKsW7cOALBkyRLY2FjNn1QikonV/BX55ZdfAAArVqzAW2+9hd27d8PNzQ1PP/00bty4AQDIy8szKmUApOd5eXn3HaPX61FaWorCwkJUV1fXOaZmG3WJiYmBi4uL9PD29n64HSYi2SUnJyM/Px8+Pj5Gp00QETWW2RezqKgoKBSK+z6ys7NhMBgAAEuXLsWECRMwcOBAbN68GQqFAtu3b5d5L+6ce6LT6aTH1atX5Y5ERA+hqqoK8fHxAIBFixbB3t5e5kREZA3s5A7wIBEREZg2bdp9x/j5+SE3NxcA0KtXL2m5SqWCn58fcnJyAABqtbrW1ZP5+fnSupr/rVl29xhnZ2c4OjrC1tYWtra2dY6p2UZdVCoVVCrVffeDiCxHSkoKrly5Ag8PD4SEhMgdh4ishNkXMw8PD3h4eDxw3MCBA6FSqXDp0iU8+eSTAIDKykr8+uuv8PX1BQBoNBqsXLkSBQUFaNeuHQAgNTUVzs7OUqHTaDTYu3ev0bZTU1Oh0WgAAEqlEgMHDkRaWpp0Kw6DwYC0tDTMmzevSfaZiMybwWBAbGwsAGDBggVwcnKSORERWQ2TXFIgkwULFggvLy+xf/9+kZ2dLUJCQkS7du3EjRs3hBBCVFVVid69e4vRo0eLU6dOiX379gkPDw8RHR0tbeOXX34RTk5OYvHixeLixYsiMTFR2Nrain379kljPvvsM6FSqURycrK4cOGCeP3114Wrq6vR1Z4PwqsyiSzXV199JQCINm3aiKKiIrnjEFEzMvX7t9nPmDVEfHw87Ozs8Oqrr6K0tBT+/v5IT0+Hm5sbAMDW1ha7d+/GnDlzoNFo0KpVKwQHB+Pvf/+7tI3OnTtjz549WLhwIRISEtCxY0ds2rQJWq1WGjN58mRcv34dy5YtQ15eHvr37499+/bVuiCAiKyPEAIxMTEAgLlz58LV1VXeQERkVRRCCCF3iJZIr9fDxcUFOp0Ozs7OcschonrKyMjA008/DZVKhV9//fW+55YSkfUx9fu32V+VSURkTmpmy2bMmMFSRkRNjsWMiKieTp48if3798PW1haLFy+WOw4RWSEWMyKieqqZLXvppZfQuXNnmdMQkTVqdDE7efIkzp49Kz3/8ssvERQUhDfffBMVFRVNEo6IyFxcunQJn3/+OYA7N74mIjKFRhezWbNm4ccffwRw5+uQXnrpJTg5OWH79u2IjIxssoBEROYgLi4OQgg8//zz6N27t9xxiMhKNbqY/fjjj+jfvz8AYPv27Rg+fDi2bt2K5ORk6b8qiYiswe+//45PPvkEwJ2vVyMiMpVGFzMhhPT9lN988w2ee+45AIC3tzcKCwubJh0RkRlYs2YNKisr8dRTT0nfAkJEZAqNLmaDBg3Cu+++i08++QQZGRkIDAwEAFy5coU3WiUiq1FYWIiNGzcC4GwZEZleo4vZ+vXrcfLkScybNw9Lly5Fly5dAAA7duzA0KFDmywgEZGcNmzYgJKSEgwYMACjR4+WOw4RWbkmv/N/WVkZbG1tYW9v35SbtTq88z+R+bt58yZ8fX1RVFSEbdu2YeLEiXJHIiKZme2d/69evYrff/9den78+HGEhYVhy5YtLGVEZBU2btyIoqIidOvWDePHj5c7DhG1AI0uZi+//DIOHDgAAMjLy8MzzzyD48ePY+nSpUZfCk5EZInKy8uxdu1aAEBkZCRsbW1lTkRELUGji9m5c+cwZMgQAMC2bdvQu3dvHDlyBJ9++imSk5ObKh8RkSy2bNmCa9euwcvLC6+++qrccYiohWh0MausrIRKpQJw53YZL7zwAgCgR48eyM3NbZp0REQyqK6uRlxcHAAgIiICSqVS5kRE1FI0upg9+uij+PDDD3Ho0CGkpqZizJgxAIBr167hkUceabKARETNbceOHbh8+TLc3d3x2muvyR2HiFqQRhezVatW4aOPPsLTTz+NKVOmoF+/fgCAr776SvqIk4jI0gghpC8rf+ONN9C6dWuZExFRS/JQt8uorq6GXq+Hm5ubtOzXX3+Fk5MT2rVr1yQBrRVvl0Fknv7zn//gueeeQ6tWrZCTkwN3d3e5IxGRGTH1+7fdw7zY1tYWVVVV+O677wAA3bt3R6dOnZoiFxGRLGpmy2bNmsVSRkTNrtEfZd6+fRszZsxA+/btMXz4cAwfPhwdOnRASEgISkpKmjIjEVGzOHz4MA4dOgR7e3uEh4fLHYeIWqBGF7Pw8HBkZGRg165dKC4uRnFxMb788ktkZGQgIiKiKTMSETWLmtmy4OBgeHl5yZyGiFqiRp9j1rZtW+zYsQNPP/200fIDBw5g0qRJuH79elPks1o8x4zIvJw5cwb9+vWDjY0NsrOz0bVrV7kjEZEZMtuvZCopKYGnp2et5e3ateNHmURkcWJjYwEAL774IksZEcmm0cVMo9Fg+fLlKCsrk5aVlpbinXfegUajaZJwRETN4eeff0ZKSgoAICoqSuY0RNSSNfqqzISEBGi1WnTs2FG6h9np06ehUqnw9ddfN1lAIiJTi4+Ph8FgwJgxYzBgwAC54xBRC/ZQ9zErKSnBp59+iuzsbABAz549MXXqVDg6OjZZQGvFc8yIzENubi46deqEiooKZGRkYPjw4XJHIiIzZtb3MXNycqr1dSW//PILZs+ezVkzIrII69atQ0VFBYYOHYphw4bJHYeIWrhGn2N2Lzdv3kRaWlpTb5aIqMkVFRUhKSkJABAdHQ2FQiFzIiJq6Zq8mBERWYrExETcunULffr0QWBgoNxxiIhYzIioZSopKUFCQgKAO1dicraMiMwBixkRtUibNm1CYWEh/Pz8MGnSJLnjEBEBaMTJ/wMGDLjvf1ny5rJEZO4qKiqwevVqAMDixYthZ/dQ10ERETWZBs+YjR079r6PKVOmYNmyZabI+kA//vgjxo4di7Zt28LZ2RlPPvkkDhw4YDQmJycHgYGBcHJyQrt27bB48WJUVVUZjTl48CAee+wxqFQqdOnSBcnJybV+VmJiIjp16gQHBwf4+/vj+PHjptw1ImpCW7duxdWrV6FWqzFt2jS54xARSRr8n4mRkZFwcnIyRZaH9te//hVdu3ZFeno6HB0dsX79evz1r3/Fzz//DLVajerqagQGBkKtVuPIkSPIzc3F3/72N9jb2+Mf//gHAODKlSsIDAzE7Nmz8emnnyItLQ0zZ85E+/btodVqAQApKSkIDw/Hhx9+CH9/f6xfvx5arRaXLl1Cu3bt5PwVENEDGAwGrFq1CgCwcOFCODg4yJyIiOguooEcHR1FYGCg+Oijj0Rubm5DX24y169fFwDEt99+Ky3T6/UCgEhNTRVCCLF3715hY2Mj8vLypDFJSUnC2dlZlJeXCyGEiIyMFI8++qjRtidPniy0Wq30fMiQISI0NFR6Xl1dLTp06CBiYmLqnVen0wkAQqfTNWxHieihfP755wKAcHV15b8/ImowU79/N/ijzIsXL0Kr1WLbtm3o1KkT/P39sXLlSpw9e7aJK2PDPPLII+jevTu2bNmC27dvo6qqCh999BHatWuHgQMHAgAyMzPRp08foy9f12q10Ov1OH/+vDQmICDAaNtarRaZmZkA7pybkpWVZTTGxsYGAQEB0pi6lJeXQ6/XGz2IqHkJIRATEwMACA0N5bduEJHZaXAx8/X1xfz58/HNN98gPz8fYWFhOHv2LIYNGwY/Pz+EhYUhPT0d1dXVpsh7TwqFAt988w1++OEHtGnTBg4ODli7di327dsHNzc3AEBeXp5RKQMgPc/Ly7vvGL1ej9LSUhQWFqK6urrOMTXbqEtMTAxcXFykh7e390PvMxE1TFpaGk6cOAFHR0csWLBA7jhERLU81O0yXFxcMGXKFHz22We4fv06PvroI1RXV2P69Onw8PDAp59++tABa+4vdL9HdnY2hBAIDQ1Fu3btcOjQIRw/fhxBQUF4/vnnkZub+9A5HlZ0dDR0Op30uHr1qtyRiFqcmtmymTNnwsPDQ+Y0RES1Nfoa8ZycHHh7e0u3zrC3t8czzzyDgIAALFq0CDdu3Kh1tWNjREREPPCqKT8/P6Snp2P37t0oKiqSPp744IMPkJqaio8//hhRUVFQq9W1rp7Mz88HAKjVaul/a5bdPcbZ2RmOjo6wtbWFra1tnWNqtlEXlUoFlUpVr30moqZ3/PhxpKenw87ODosWLZI7DhFRnRpdzDp37ozc3NxaVyHeuHEDfn5+TfZRpoeHR73+y7bm/mk2NsaTgDY2NjAYDAAAjUaDlStXoqCgQMqdmpoKZ2dn9OrVSxqzd+9eo22kpqZCo9EAAJRKJQYOHIi0tDQEBQUBuHOVV1paGubNm9f4HSUik6qZLZs6dSp8fHxkTkNEVLdGf5QphKjzRrO3bt2S5fJzjUYDNzc3BAcH4/Tp0/jxxx+xePFi6fYXADB69Gj06tULr776Kk6fPo39+/fjrbfeQmhoqDSbNXv2bPzyyy+IjIxEdnY2PvjgA2zbtg0LFy6UflZ4eDj+93//Fx9//DEuXryIOXPm4Pbt25g+fXqz7zcRPdiFCxewc+dOKBQKLFmyRO44RET31OAZs/DwcAB3TrZ/++23je5pVl1djWPHjqF///5NFrC+2rZti3379mHp0qUYOXIkKisr8eijj+LLL79Ev379AAC2trbYvXs35syZA41Gg1atWiE4OBh///vfpe107twZe/bswcKFC5GQkICOHTti06ZN0j3MAGDy5Mm4fv06li1bhry8PPTv3x/79u2rdUEAEZmHmvuWBQUFoWfPnjKnISK6N4UQQjTkBSNGjAAAZGRkQKPRQKlUSuuUSiU6deqERYsWoWvXrk2b1Mro9Xq4uLhAp9Pxkn0iE/rtt9/QpUsXVFVV4fjx4xg8eLDckYjIgpn6/bvBM2Y1X3E0ffp0JCQksFQQkVlbvXo1qqqqMGrUKJYyIjJ7DZ4xo6bBGTMi0ysoKICvry/KysrwzTffYNSoUXJHIiILZ1YzZuPHj0dycjKcnZ0xfvz4+47997///VDBiIgeVkJCAsrKyjB48GCMHDlS7jhERA/UoGLm4uIiXYnp7Oxc51WZRETmQK/XIzExEQDw5ptv8u8VEVmEBhWzcePGSbfCSE5ONkUeIqImkZSUBJ1Oh169euGFF16QOw4RUb006D5m48aNQ3FxMYA7t54oKCgwRSYioodSWlqKdevWAQCWLFlS68bTRETmqkF/rTw8PHD06FEA977BLBGR3JKTk5Gfnw9fX19MmTJF7jhERPXWoI8yZ8+ejbFjx0pfHn6/74Zsqq9kIiJqiKqqKsTHxwMAFi1aBHt7e5kTERHVX4OK2YoVK/DSSy/h8uXLeOGFF7B582a4urqaKBoRUcOlpKTgypUr8PDwwIwZM+SOQ0TUIA2+wWyPHj3Qo0cPLF++HBMnTjT6SiYiIjkZDAbExsYCAMLCwvj3iYgszkPfYPb69eu4dOkSAKB79+7w8PBokmDWjjeYJWp6u3btwgsvvIA2bdogJyeHM/pE1ORM/f7d6EuVSkpKMGPGDHTo0AHDhw/H8OHD0aFDB4SEhKCkpKQpMxIRPZAQAv/4xz8AAHPnzmUpIyKL1OhitnDhQmRkZOCrr75CcXExiouL8eWXXyIjIwMRERFNmZGI6IEyMjJw9OhRqFQqhIWFyR2HiKhRGnyOWY3PP/8cO3bswNNPPy0te+655+Do6IhJkyYhKSmpKfIREdVLTEwMAGDGjBn3vWKciMicPdRHmZ6enrWWt2vXjh9lElGzysrKwtdffw1bW1ssXrxY7jhERI3W6GKm0WiwfPlylJWVSctKS0vxzjvvQKPRNEk4IqL6qLkS86WXXkLnzp1lTkNE1HiN/ihz/fr1GDNmDDp27Ih+/foBAE6fPg0HBwfs37+/yQISEd3PpUuX8PnnnwMAoqKiZE5DRPRwGl3M+vTpg59++gmffvopsrOzAQBTpkzB1KlT4ejo2GQBiYjuJy4uDkIIPP/88+jdu7fccYiIHkqj7mNWWVmJHj16YPfu3ejZs6cpclk93seM6OH9/vvv8PPzQ2VlJY4cOcLTKIjI5MzyPmb29vZG55YREclhzZo1qKysxFNPPcVSRkRWodEn/4eGhmLVqlWoqqpqyjxERPVSWFiIjRs3AgCio6NlTkNE1DQafY7Z999/j7S0NHz99dfo06cPWrVqZbT+3//+90OHIyK6lw0bNqCkpAQDBgzA6NGj5Y5DRNQkGl3MXF1dMWHChKbMQkRULzdv3sSGDRsA3JktUygUMiciImoaDS5mBoMB8fHx+PHHH1FRUYGRI0dixYoVvBKTiJrNxo0bUVRUhG7dumH8+PFyxyEiajINPsds5cqVePPNN9G6dWt4eXnhvffeQ2hoqCmyERHVUl5ejrVr1wIAIiMjYWtrK3MiIqKm0+BitmXLFnzwwQfYv38/du7ciV27duHTTz+FwWAwRT4iIiNbtmzBtWvX4OXlhVdffVXuOERETarBxSwnJwfPPfec9DwgIAAKhQLXrl1r0mBERP+turoacXFxAICIiAgolUqZExERNa0GF7Oqqio4ODgYLbO3t0dlZWWThSIiqsuOHTtw+fJluLu747XXXpM7DhFRk2vwyf9CCEybNg0qlUpaVlZWhtmzZxvdMoO3yyCipiSEQExMDADgjTfeQOvWrWVORETU9BpczIKDg2ste+WVV5okDBHRvezbtw+nT59Gq1atMH/+fLnjEBGZRIOL2ebNm02Rg4jovmpmy2bNmgV3d3eZ0xARmUajv5Kpua1cuRJDhw6Fk5MTXF1d6xyTk5ODwMBAODk5oV27dli8eHGtr4w6ePAgHnvsMahUKnTp0gXJycm1tpOYmIhOnTrBwcEB/v7+OH78uNH6srIyhIaG4pFHHkHr1q0xYcIE5OfnN9WuEtF/OXz4MA4dOgR7e3uEh4fLHYeIyGQspphVVFRg4sSJmDNnTp3rq6urERgYiIqKChw5cgQff/wxkpOTsWzZMmnMlStXEBgYiBEjRuDUqVMICwvDzJkzsX//fmlMSkoKwsPDsXz5cpw8eRL9+vWDVqtFQUGBNGbhwoXYtWsXtm/fjoyMDFy7do03uSQyoZrZsuDgYHh5ecmchojIhISF2bx5s3Bxcam1fO/evcLGxkbk5eVJy5KSkoSzs7MoLy8XQggRGRkpHn30UaPXTZ48WWi1Wun5kCFDRGhoqPS8urpadOjQQcTExAghhCguLhb29vZi+/bt0piLFy8KACIzM7Pe+6HT6QQAodPp6v0aopbo9OnTAoCwsbERP/74o9xxiKiFM/X7t8XMmD1IZmYm+vTpA09PT2mZVquFXq/H+fPnpTEBAQFGr9NqtcjMzARwZ1YuKyvLaIyNjQ0CAgKkMVlZWaisrDQa06NHD/j4+Ehj6lJeXg69Xm/0IKIHi42NBQC8+OKL6Nq1q8xpiIhMy2qKWV5enlEpAyA9z8vLu+8YvV6P0tJSFBYWorq6us4xd29DqVTWOs/t7jF1iYmJgYuLi/Tw9vZu1H4StSQ///wzUlJSAABRUVEypyEiMj1Zi1lUVBQUCsV9H9nZ2XJGbDLR0dHQ6XTS4+rVq3JHIjJ78fHxMBgMGDNmDAYMGCB3HCIik2vw7TKaUkREBKZNm3bfMX5+fvXallqtrnX1ZM2Vkmq1Wvrf/756Mj8/H87OznB0dIStrS1sbW3rHHP3NioqKlBcXGw0a3b3mLqoVCqjm/IS0f3l5uZKt+eJjo6WOQ0RUfOQdcbMw8MDPXr0uO+jvt+Fp9FocPbsWaOrJ1NTU+Hs7IxevXpJY9LS0oxel5qaCo1GAwBQKpUYOHCg0RiDwYC0tDRpzMCBA2Fvb2805tKlS8jJyZHGENHDW7duHSoqKjB06FAMGzZM7jhERM1C1hmzhsjJycGNGzeQk5OD6upqnDp1CgDQpUsXtG7dGqNHj0avXr3w6quvIi4uDnl5eXjrrbcQGhoqzVTNnj0b77//PiIjIzFjxgykp6dj27Zt2LNnj/RzwsPDERwcjEGDBmHIkCFYv349bt++jenTpwMAXFxcEBISgvDwcLi7u8PZ2Rnz58+HRqPB448/3uy/FyJrVFRUhKSkJAB3ZssUCoXMiYiImolJrvU0geDgYAGg1uPAgQPSmF9//VU8++yzwtHRUbRt21ZERESIyspKo+0cOHBA9O/fXyiVSuHn5yc2b95c62dt2LBB+Pj4CKVSKYYMGSKOHj1qtL60tFTMnTtXuLm5CScnJzFu3DiRm5vboP3h7TKI7u1//ud/BADRp08fYTAY5I5DRCQx9fu3Qggh5KuFLZder4eLiwt0Oh2cnZ3ljkNkNkpKSuDr64vCwkJ8+umnePnll+WOREQkMfX7t9XcLoOIrMOmTZtQWFgIPz8/TJo0Se44RETNisWMiMxGRUUFVq9eDQBYvHgx7Ows5jRYIqImwWJGRGZj69atuHr1KtRq9QNvpUNEZI1YzIjILBgMBqxatQoAsHDhQjg4OMiciIio+bGYEZFZ2LlzJ7Kzs+Hq6orZs2fLHYeISBYsZkQkOyEEYmJiAAChoaG8UpmIWiwWMyKSXVpaGk6cOAFHR0csWLBA7jhERLJhMSMi2dXMls2cORMeHh4ypyEikg+LGRHJ6vjx40hPT4ednR0WLVokdxwiIlmxmBGRrGpmy1555RX4+PjInIaISF4sZkQkmwsXLmDnzp1QKBRYsmSJ3HGIiGTHYkZEsqm5b9m4cePQo0cPmdMQEcmPxYyIZPHbb79h69atAIDo6GiZ0xARmQcWMyKSxerVq1FVVYWAgAAMGjRI7jhERGaBxYyIml1BQQE2bdoEgLNlRER3YzEjomaXkJCAsrIyDBkyBCNGjJA7DhGR2WAxI6JmpdfrkZiYCODObJlCoZA5ERGR+WAxI6JmlZSUBJ1Oh169euGFF16QOw4RkVlhMSOiZlNaWop169YBAJYsWQIbG/4JIiK6G/8qElGzSU5ORn5+Pnx9fTFlyhS54xARmR0WMyJqFlVVVYiLiwMALFq0CPb29jInIiIyPyxmRNQsPvvsM/z666/w8PDAjBkz5I5DRGSWWMyIyOQMBgNiY2MBAGFhYXBycpI5ERGReWIxIyKT2717N86fP482bdpg7ty5cschIjJbLGZEZFJCCMTExAAA5s6dC1dXV3kDERGZMRYzIjKpjIwMHD16FCqVCmFhYXLHISIyayxmRGRSNbNlM2bMgFqtljkNEZF5YzEjIpPJysrC119/DVtbWyxevFjuOEREZo/FjIhMpuZKzJdeegmdO3eWOQ0RkfljMSMik7h06RI+//xzAEBUVJTMaYiILAOLGRGZRFxcHIQQeP7559G7d2+54xARWQSLKWYrV67E0KFD4eTkVOfl9qdPn8aUKVPg7e0NR0dH9OzZEwkJCbXGHTx4EI899hhUKhW6dOmC5OTkWmMSExPRqVMnODg4wN/fH8ePHzdaX1ZWhtDQUDzyyCNo3bo1JkyYgPz8/KbaVSKL9/vvv+OTTz4BAERHR8uchojIclhMMauoqMDEiRMxZ86cOtdnZWWhXbt2+Oc//4nz589j6dKliI6Oxvvvvy+NuXLlCgIDAzFixAicOnUKYWFhmDlzJvbv3y+NSUlJQXh4OJYvX46TJ0+iX79+0Gq1KCgokMYsXLgQu3btwvbt25GRkYFr165h/Pjxptt5IguzZs0aVFZW4qmnnoJGo5E7DhGRxVAIIYTcIRoiOTkZYWFhKC4ufuDY0NBQXLx4Eenp6QCAJUuWYM+ePTh37pw05qWXXkJxcTH27dsHAPD398fgwYOlQmcwGODt7Y358+cjKioKOp0OHh4e2Lp1K1588UUAQHZ2Nnr27InMzEw8/vjj9doPvV4PFxcX6HQ6ODs7N+RXQGTWCgsL4evri5KSEuzbtw9arVbuSERETcbU798WM2PWGDqdDu7u7tLzzMxMBAQEGI3RarXIzMwEcGdWLisry2iMjY0NAgICpDFZWVmorKw0GtOjRw/4+PhIY+pSXl4OvV5v9CCyRhs2bEBJSQkGDBiA0aNHyx2HiMiiWG0xO3LkCFJSUvD6669Ly/Ly8uDp6Wk0ztPTE3q9HqWlpSgsLER1dXWdY/Ly8qRtKJXKWue53T2mLjExMXBxcZEe3t7eD7mHRObn5s2b2LBhA4A755YpFAqZExERWRZZi1lUVBQUCsV9H9nZ2Q3e7rlz5zB27FgsX77cbP6LPTo6GjqdTnpcvXpV7khETW7jxo0oKipCt27deN4lEVEj2Mn5wyMiIjBt2rT7jvHz82vQNi9cuIBRo0bh9ddfx1tvvWW0Tq1W17p6Mj8/H87OznB0dIStrS1sbW3rHFPzVTJqtRoVFRUoLi42mjW7e0xdVCoVVCpVg/aFyJKUl5dj7dq1AIDIyEjY2trKnIiIyPLIWsw8PDzg4eHRZNs7f/48Ro4cieDgYKxcubLWeo1Gg7179xotS01Nla4aUyqVGDhwINLS0hAUFATgzsn/aWlpmDdvHgBg4MCBsLe3R1paGiZMmADgzo00c3JyePUZtWhbtmzBtWvX4OXlhVdffVXuOEREFknWYtYQOTk5uHHjBnJyclBdXY1Tp04BALp06YLWrVvj3LlzGDlyJLRaLcLDw6XzvWxtbaXyN3v2bLz//vuIjIzEjBkzkJ6ejm3btmHPnj3SzwkPD0dwcDAGDRqEIUOGYP369bh9+zamT58OAHBxcUFISAjCw8Ph7u4OZ2dnzJ8/HxqNpt5XZBJZm+rqasTFxQG4MxOuVCplTkREZKGEhQgODhYAaj0OHDgghBBi+fLlda739fU12s6BAwdE//79hVKpFH5+fmLz5s21ftaGDRuEj4+PUCqVYsiQIeLo0aNG60tLS8XcuXOFm5ubcHJyEuPGjRO5ubkN2h+dTicACJ1O16DXEZmjzz77TAAQ7u7u4ubNm3LHISIyGVO/f1vcfcysBe9jRtZCCIEBAwbg9OnTWLFiBZYvXy53JCIik+F9zIjIrO3btw+nT59Gq1atMH/+fLnjEBFZNBYzInooMTExAIBZs2YZ3dCZiIgajsWMiBrt8OHDOHToEOzt7REeHi53HCIii8diRkSNVjNbFhwcDC8vL5nTEBFZPhYzImqUM2fOYM+ePbCxsUFkZKTccYiIrAKLGRE1SmxsLADgxRdfRNeuXWVOQ0RkHVjMiKjBfv75Z6SkpAC48523RETUNFjMiKjB4uPjYTAYMGbMGAwYMEDuOEREVoPFjIgaJDc3F5s3bwYAREdHy5yGiMi6sJgRUYOsW7cOFRUVGDp0KIYNGyZ3HCIiq8JiRkT1VlRUhKSkJAB3ZssUCoXMiYiIrAuLGRHVW2JiIm7duoU+ffogMDBQ7jhERFaHxYyI6qWkpAQJCQkA7lyJydkyIqKmx2JGRPWyadMmFBYWws/PD5MmTZI7DhGRVWIxI6IHqqiowOrVqwEAkZGRsLOzkzkREZF1YjEjogfaunUrrl69CrVajeDgYLnjEBFZLRYzIrovg8GAVatWAQDCw8Ph4OAgcyIiIuvFYkZE97Vz505kZ2fD1dUVs2fPljsOEZFVYzEjonsSQiAmJgYAMG/ePLRp00bmRERE1o3FjIjuKS0tDSdOnICjoyPeeOMNueMQEVk9FjMiuqea2bLXXnsNHh4eMqchIrJ+LGZEVKfjx48jPT0ddnZ2iIiIkDsOEVGLwGJGRHWqmS175ZVX4OPjI3MaIqKWgcWMiGq5cOECdu7cCYVCgSVLlsgdh4ioxWAxI6Jaau5bNm7cOPTo0UPmNERELQeLGREZ+e2337B161YAQHR0tMxpiIhaFhYzIjKyevVqVFVVISAgAIMGDZI7DhFRi8JiRkSSgoICbNq0CQBny4iI5MBiRkSS9evXo6ysDEOGDMGIESPkjkNE1OKwmBERAECn0yExMRHAndkyhUIhcyIiopaHxYyIAABJSUnQ6/Xo1asXXnjhBbnjEBG1SBZTzFauXImhQ4fCyckJrq6u9x37559/omPHjlAoFCguLjZad/DgQTz22GNQqVTo0qULkpOTa70+MTERnTp1goODA/z9/XH8+HGj9WVlZQgNDcUjjzyC1q1bY8KECcjPz3/IPSSST2lpKdatWwcAWLJkCWxsLOZPAxGRVbGYv74VFRWYOHEi5syZ88CxISEh6Nu3b63lV65cQWBgIEaMGIFTp04hLCwMM2fOxP79+6UxKSkpCA8Px/Lly3Hy5En069cPWq0WBQUF0piFCxdi165d2L59OzIyMnDt2jWMHz++aXaUSAabN29GQUEBfH19MWXKFLnjEBG1XMLCbN68Wbi4uNxz/QcffCCeeuopkZaWJgCIoqIiaV1kZKR49NFHjcZPnjxZaLVa6fmQIUNEaGio9Ly6ulp06NBBxMTECCGEKC4uFvb29mL79u3SmIsXLwoAIjMzs977odPpBACh0+nq/RoiU6isrBSdOnUSAMSGDRvkjkNEZNZM/f5tMTNm9XHhwgX8/e9/x5YtW+r8KCYzMxMBAQFGy7RaLTIzMwHcmZXLysoyGmNjY4OAgABpTFZWFiorK43G9OjRAz4+PtKYupSXl0Ov1xs9iMzBZ599hl9//RUeHh6YMWOG3HGIiFo0qylm5eXlmDJlCuLj4+/5hct5eXnw9PQ0Wubp6Qm9Xo/S0lIUFhaiurq6zjF5eXnSNpRKZa3z3O4eU5eYmBi4uLhID29v70bsJVHTMhgMiI2NBQCEhYXByclJ5kRERC2brMUsKioKCoXivo/s7Ox6bSs6Oho9e/bEK6+8YuLUjRMdHQ2dTic9rl69KnckIuzevRvnz59HmzZtMHfuXLnjEBG1eHZy/vCIiAhMmzbtvmP8/Pzqta309HScPXsWO3bsAAAIIQAAbdu2xdKlS/HOO+9ArVbXunoyPz8fzs7OcHR0hK2tLWxtbesco1arAQBqtRoVFRUoLi42mjW7e0xdVCoVVCpVvfaFqDkIIRATEwMAmDt37gOvdiYiItOTtZh5eHjAw8OjSbb1+eefo7S0VHr+/fffY8aMGTh06BD+8pe/AAA0Gg327t1r9LrU1FRoNBoAgFKpxMCBA5GWloagoCAAdz7qSUtLw7x58wAAAwcOhL29PdLS0jBhwgQAwKVLl5CTkyNth8gSZGRk4OjRo1CpVAgLC5M7DhERQeZi1hA5OTm4ceMGcnJyUF1djVOnTgEAunTpgtatW0vlq0ZhYSEAoGfPntJMwOzZs/H+++8jMjISM2bMQHp6OrZt24Y9e/ZIrwsPD0dwcDAGDRqEIUOGYP369bh9+zamT58OAHBxcUFISAjCw8Ph7u4OZ2dnzJ8/HxqNBo8//rjpfxFETaRmtmzGjBn3ne0lIqJmZJJrPU0gODhYAKj1OHDgQJ3jDxw4UOt2GTXL+/fvL5RKpfDz8xObN2+u9doNGzYIHx8foVQqxZAhQ8TRo0eN1peWloq5c+cKNzc34eTkJMaNGydyc3MbtD+8XQbJ6cSJEwKAsLW1Fb/88ovccYiILIap378VQvy/k7GoWen1eri4uECn08HZ2VnuONTCTJw4ETt27MDUqVPxz3/+U+44REQWw9Tv31Zzuwwiqp9Lly7h888/B3DnymgiIjIfLGZELUxcXByEEHj++efRu3dvueMQEdFdWMyIWpDff/8dn3zyCYA799YjIiLzwmJG1IKsWbMGlZWVeOqpp3h7FyIiM8RiRtRCFBYWYuPGjQA4W0ZEZK5YzIhaiA0bNqCkpAQDBgzA6NGj5Y5DRER1YDEjagFu3ryJDRs2ALgzW6ZQKGROREREdWExI2oBNm7ciKKiInTr1g3jx4+XOw4REd0DixmRlSsvL8fatWsBAJGRkbC1tZU5ERER3QuLGZGV27JlC65duwYvLy+8+uqrcschIqL7YDEjsmLV1dWIi4sDAERERECpVMqciIiI7ofFjMiK7dixA5cvX4a7uztee+01ueMQEdEDsJgRWSkhBGJiYgAAb7zxBlq3bi1zIiIiehAWMyIrtW/fPpw+fRqtWrXC/Pnz5Y5DRET1wGJGZKVqZstmzZoFd3d3mdMQEVF9sJgRWaHDhw/j0KFDsLe3R3h4uNxxiIionljMiKxQzWxZcHAwvLy8ZE5DRET1xWJGZGXOnDmDPXv2wMbGBpGRkXLHISKiBmAxI7IysbGxAIAXX3wRXbt2lTkNERE1BIsZkRX5+eefkZKSAuDOl5UTEZFlYTEjsiLx8fEwGAx49tln0b9/f7njEBFRA7GYEVmJ3NxcbN68GQBny4iILBWLGZGVWLduHSoqKvDEE09g2LBhcschIqJGYDEjsgJFRUVISkoCwNkyIiJLxmJGZAUSExNx69Yt9O3bF88995zccYiIqJFYzIgsXElJCRISEgAAUVFRUCgUMiciIqLGYjEjsnCbNm1CYWEh/Pz8MHHiRLnjEBHRQ2AxI7JgFRUVWL16NQAgMjISdnZ2MiciIqKHwWJGZMG2bt2Kq1evQq1WIzg4WO44RET0kFjMiCyUwWDAqlWrAADh4eFwcHCQORERET0sFjMiC7Vz505kZ2fD1dUVs2fPljsOERE1AYspZitXrsTQoUPh5OQEV1fXe45LTk5G37594eDggHbt2iE0NNRo/ZkzZzBs2DA4ODjA29sbcXFxtbaxfft29OjRAw4ODujTpw/27t1rtF4IgWXLlqF9+/ZwdHREQEAAfvrppybZT6L6EEIgJiYGADBv3jy0adNG5kRERNQULKaYVVRUYOLEiZgzZ849x6xduxZLly5FVFQUzp8/j2+++QZarVZar9frMXr0aPj6+iIrKwvx8fFYsWIFNm7cKI05cuQIpkyZgpCQEPzwww8ICgpCUFAQzp07J42Ji4vDe++9hw8//BDHjh1Dq1atoNVqUVZWZpqdJ/ovaWlpOHHiBBwdHfHGG2/IHYeIiJqIQggh5A7REMnJyQgLC0NxcbHR8qKiInh5eWHXrl0YNWpUna9NSkrC0qVLkZeXB6VSCeDOfZ9qPhICgMmTJ+P27dvYvXu39LrHH38c/fv3x4cffgghBDp06ICIiAgsWrQIAKDT6eDp6Ynk5GS89NJL9doPvV4PFxcXnDlzxmi2416Ho67lHNtyxy5ZsgSHDh3CG2+8Id3DjIiITK/m/Vun08HZ2bnJt28119anpqbCYDDgjz/+QM+ePXHz5k0MHToUa9asgbe3NwAgMzMTw4cPl0oZAGi1WqxatQpFRUVwc3NDZmYmwsPDjbat1Wqxc+dOAMCVK1eQl5eHgIAAab2Liwv8/f2RmZl5z2JWXl6O8vJy6blerwcA9O3bt0n2n1oeOzs7REREyB2DiIiakNUUs19++QUGgwH/+Mc/kJCQABcXF7z11lt45plncObMGSiVSuTl5aFz585Gr/P09AQA5OXlwc3NDXl5edKyu8fk5eVJ4+5+XV1j6hITE4N33nmn1nIHB4dad2qv687t9V3G17eM1ysUCsycORM+Pj51boOIiCyTrMUsKipKutz/Xi5evIgePXo8cFsGgwGVlZV47733MHr0aADAv/71L6jVahw4cMDoXDM5REdHG83E6fV6eHt7Iz8/3yRToURERGR5ZC1mERERmDZt2n3H+Pn51Wtb7du3BwD06tVLWubh4YG2bdsiJycHAKBWq5Gfn2/0uprnarX6vmPuXl+zrOZn1jzv37//PfOpVCqoVKp67QsRERG1TLIWMw8PD3h4eDTJtp544gkAwKVLl9CxY0cAwI0bN1BYWAhfX18AgEajwdKlS1FZWQl7e3sAd85N6969O9zc3KQxaWlpCAsLk7admpoKjUYDAOjcuTPUajXS0tKkIqbX63Hs2LH7XjFKRERE9CAWc7uMnJwcnDp1Cjk5OaiursapU6dw6tQp3Lp1CwDQrVs3jB07FgsWLMCRI0dw7tw5BAcHo0ePHhgxYgQA4OWXX4ZSqURISAjOnz+PlJQUJCQkGH3EuGDBAuzbtw9r1qxBdnY2VqxYgRMnTmDevHkA7pzbExYWhnfffRdfffUVzp49i7/97W/o0KEDgoKCmv33QkRERFZEWIjg4GABoNbjwIED0hidTidmzJghXF1dhbu7uxg3bpzIyckx2s7p06fFk08+KVQqlfDy8hKxsbG1fta2bdtEt27dhFKpFI8++qjYs2eP0XqDwSDefvtt4enpKVQqlRg1apS4dOlSg/ZHp9MJAEKn0zXodURERCQfU79/W9x9zKyFqe+DQkRERE3P1O/fFvNRJhEREZG1YzEjIiIiMhMsZkRERERmgsWMiIiIyEywmBERERGZCRYzIiIiIjPBYkZERERkJljMiIiIiMwEixkRERGRmZD1S8xbspovXNDr9TInISIiovqqed821RcnsZjJ5M8//wQAeHt7y5yEiIiIGurPP/+Ei4tLk2+XxUwm7u7uAICcnByTHFiqP71eD29vb1y9epXfWyozHgvzwuNhPngszIdOp4OPj4/0Pt7UWMxkYmNz5/Q+FxcX/iMzE87OzjwWZoLHwrzweJgPHgvzUfM+3uTbNclWiYiIiKjBWMyIiIiIzASLmUxUKhWWL18OlUold5QWj8fCfPBYmBceD/PBY2E+TH0sFMJU13sSERERUYNwxoyIiIjITLCYEREREZkJFjMiIiIiM8FiRkRERGQmWMxkkJiYiE6dOsHBwQH+/v44fvy43JGszrfffovnn38eHTp0gEKhwM6dO43WCyGwbNkytG/fHo6OjggICMBPP/1kNObGjRuYOnUqnJ2d4erqipCQENy6dasZ98I6xMTEYPDgwWjTpg3atWuHoKAgXLp0yWhMWVkZQkND8cgjj6B169aYMGEC8vPzjcbk5OQgMDAQTk5OaNeuHRYvXoyqqqrm3BWLl5SUhL59+0o3KdVoNPjPf/4jredxkE9sbCwUCgXCwsKkZTwezWfFihVQKBRGjx49ekjrm/NYsJg1s5SUFISHh2P58uU4efIk+vXrB61Wi4KCArmjWZXbt2+jX79+SExMrHN9XFwc3nvvPXz44Yc4duwYWrVqBa1Wi7KyMmnM1KlTcf78eaSmpmL37t349ttv8frrrzfXLliNjIwMhIaG4ujRo0hNTUVlZSVGjx6N27dvS2MWLlyIXbt2Yfv27cjIyMC1a9cwfvx4aX11dTUCAwNRUVGBI0eO4OOPP0ZycjKWLVsmxy5ZrI4dOyI2NhZZWVk4ceIERo4cibFjx+L8+fMAeBzk8v333+Ojjz5C3759jZbzeDSvRx99FLm5udLju+++k9Y167EQ1KyGDBkiQkNDpefV1dWiQ4cOIiYmRsZU1g2A+OKLL6TnBoNBqNVqER8fLy0rLi4WKpVK/Otf/xJCCHHhwgUBQHz//ffSmP/85z9CoVCIP/74o9myW6OCggIBQGRkZAgh7vzu7e3txfbt26UxFy9eFABEZmamEEKIvXv3ChsbG5GXlyeNSUpKEs7OzqK8vLx5d8DKuLm5iU2bNvE4yOTmzZuia9euIjU1VTz11FNiwYIFQgj+u2huy5cvF/369atzXXMfC86YNaOKigpkZWUhICBAWmZjY4OAgABkZmbKmKxluXLlCvLy8oyOg4uLC/z9/aXjkJmZCVdXVwwaNEgaExAQABsbGxw7dqzZM1sTnU4HANIXAGdlZaGystLoePTo0QM+Pj5Gx6NPnz7w9PSUxmi1Wuj1emm2hxqmuroan332GW7fvg2NRsPjIJPQ0FAEBgYa/d4B/ruQw08//YQOHTrAz88PU6dORU5ODoDmPxb8EvNmVFhYiOrqaqMDBwCenp7Izs6WKVXLk5eXBwB1HoeadXl5eWjXrp3Rejs7O7i7u0tjqOEMBgPCwsLwxBNPoHfv3gDu/K6VSiVcXV2Nxv738ajreNWso/o7e/YsNBoNysrK0Lp1a3zxxRfo1asXTp06xePQzD777DOcPHkS33//fa11/HfRvPz9/ZGcnIzu3bsjNzcX77zzDoYNG4Zz5841+7FgMSOiZhMaGopz584ZnbtBzat79+44deoUdDodduzYgeDgYGRkZMgdq8W5evUqFixYgNTUVDg4OMgdp8V79tlnpf/ft29f+Pv7w9fXF9u2bYOjo2OzZuFHmc2obdu2sLW1rXUlR35+PtRqtUypWp6a3/X9joNara51QUZVVRVu3LjBY9VI8+bNw+7du3HgwAF07NhRWq5Wq1FRUYHi4mKj8f99POo6XjXrqP6USiW6dOmCgQMHIiYmBv369UNCQgKPQzPLyspCQUEBHnvsMdjZ2cHOzg4ZGRl47733YGdnB09PTx4PGbm6uqJbt264fPlys//bYDFrRkqlEgMHDkRaWpq0zGAwIC0tDRqNRsZkLUvnzp2hVquNjoNer8exY8ek46DRaFBcXIysrCxpTHp6OgwGA/z9/Zs9syUTQmDevHn44osvkJ6ejs6dOxutHzhwIOzt7Y2Ox6VLl5CTk2N0PM6ePWtUllNTU+Hs7IxevXo1z45YKYPBgPLych6HZjZq1CicPXsWp06dkh6DBg3C1KlTpf/P4yGfW7du4eeff0b79u2b/99Ggy9doIfy2WefCZVKJZKTk8WFCxfE66+/LlxdXY2u5KCHd/PmTfHDDz+IH374QQAQa9euFT/88IP47bffhBBCxMbGCldXV/Hll1+KM2fOiLFjx4rOnTuL0tJSaRtjxowRAwYMEMeOHRPfffed6Nq1q5gyZYpcu2Sx5syZI1xcXMTBgwdFbm6u9CgpKZHGzJ49W/j4+Ij09HRx4sQJodFohEajkdZXVVWJ3r17i9GjR4tTp06Jffv2CQ8PDxEdHS3HLlmsqKgokZGRIa5cuSLOnDkjoqKihEKhEF9//bUQgsdBbndflSkEj0dzioiIEAcPHhRXrlwRhw8fFgEBAaJt27aioKBACNG8x4LFTAYbNmwQPj4+QqlUiiFDhoijR4/KHcnqHDhwQACo9QgODhZC3Lllxttvvy08PT2FSqUSo0aNEpcuXTLaxp9//immTJkiWrduLZydncX06dPFzZs3Zdgby1bXcQAgNm/eLI0pLS0Vc+fOFW5ubsLJyUmMGzdO5ObmGm3n119/Fc8++6xwdHQUbdu2FREREaKysrKZ98ayzZgxQ/j6+gqlUik8PDzEqFGjpFImBI+D3P67mPF4NJ/JkyeL9u3bC6VSKby8vMTkyZPF5cuXpfXNeSwUQgjR6Lk+IiIiImoyPMeMiIiIyEywmBERERGZCRYzIiIiIjPBYkZERERkJljMiIiIiMwEixkRERGRmWAxIyIiIjITLGZEREREZoLFjIioEZKTk+Hq6tosP+vgwYNQKBS1vkSZiKwPixkRWbTr169jzpw58PHxgUqlglqthlarxeHDh6UxCoUCO3fulC/kQxo6dChyc3Ph4uIidxQiMjE7uQMQET2MCRMmoKKiAh9//DH8/PyQn5+PtLQ0/Pnnn3JHaxKVlZVQKpVQq9VyRyGiZsAZMyKyWMXFxTh06BBWrVqFESNGwNfXF0OGDEF0dDReeOEFAECnTp0AAOPGjYNCoZCeA0BSUhL+8pe/QKlUonv37vjkk09qbX/WrFnw9PSEg4MDevfujd27d9eZ5fr16xg0aBDGjRuH8vLyOsd06tQJ//M//4MpU6agVatW8PLyQmJiotEYhUKBpKQkvPDCC2jVqhVWrlxZ50eZhw8fxtNPPw0nJye4ublBq9WiqKgIAGAwGBATE4POnTvD0dER/fr1w44dOxryqyUimbCYEZHFat26NVq3bo2dO3feswx9//33AIDNmzcjNzdXev7FF19gwYIFiIiIwLlz5zBr1ixMnz4dBw4cAHCn3Dz77LM4fPgw/vnPf+LChQuIjY2Fra1trZ9x9epVDBs2DL1798aOHTugUqnumTk+Ph79+vXDDz/8gKioKCxYsACpqalGY1asWIFx48bh7NmzmDFjRq1tnDp1CqNGjUKvXr2QmZmJ7777Ds8//zyqq6sBADExMdiyZQs+/PBDnD9/HgsXLsQrr7yCjIyMevxWiUhWgojIgu3YsUO4ubkJBwcHMXToUBEdHS1Onz5tNAaA+OKLL4yWDR06VLz22mtGyyZOnCiee+45IYQQ+/fvFzY2NuLSpUt1/tzNmzcLFxcXkZ2dLby9vcUbb7whDAbDfbP6+vqKMWPGGC2bPHmyePbZZ42yhoWFGY05cOCAACCKioqEEEJMmTJFPPHEE3X+jLKyMuHk5CSOHDlitDwkJERMmTLlvvmISH6cMSMiizZhwgRcu3YNX331FcaMGYODBw/iscceQ3Jy8n1fd/HiRTzxxBNGy5544glcvHgRwJ1ZqY4dO6Jbt2733EZpaSmGDRuG8ePHIyEhAQqF4oF5NRpNrec1P7PGoEGD7ruNmhmzuly+fBklJSV45plnpBnF1q1bY8uWLfj5558fmI+I5MWT/4nI4jk4OOCZZ57BM888g7fffhszZ87E8uXLMW3atEZv09HR8YFjVCoVAgICsHv3bixevBheXl6N/nl3a9WqVaOz3bp1CwCwZ8+eWnnu9xErEZkHzpgRkdXp1asXbt++LT23t7eXzr+q0bNnT6NbagB3Tqjv1asXAKBv3774/fff8eOPP97z59jY2OCTTz7BwIEDMWLECFy7du2B2Y4ePVrrec+ePR/4urv17dsXaWlpda7r1asXVCoVcnJy0KVLF6OHt7d3g34OETU/zpgRkcX6888/MXHiRMyYMQN9+/ZFmzZtcOLECcTFxWHs2LHSuE6dOiEtLQ1PPPEEVCoV3NzcsHjxYkyaNAkDBgxAQEAAdu3ahX//+9/45ptvAABPPfUUhg8fjgkTJmDt2rXo0qULsrOzoVAoMGbMGGnbtra2+PTTTzFlyhSMHDkSBw8evO+tLQ4fPoy4uDgEBQUhNTUV27dvx549exq039HR0ejTpw/mzp2L2bNnQ6lU4sCBA5g4cSLatm2LRYsWYeHChTAYDHjyySeh0+lw+PBhODs7Izg4uIG/ZSJqVnKf5EZE1FhlZWUiKipKPPbYY8LFxUU4OTmJ7t27i7feekuUlJRI47766ivRpUsXYWdnJ3x9faXlH3zwgfDz8xP29vaiW7duYsuWLUbb//PPP8X06dPFI488IhwcHETv3r3F7t27hRD//+T/GpWVlWL8+PGiZ8+eIj8/v868vr6+4p133hETJ04UTk5OQq1Wi4SEBKMxqONChf8++V8IIQ4ePCiGDh0qVCqVcHV1FVqtVlpvMBjE+vXrRffu3YW9vb3w8PAQWq1WZGRk1PM3S0RyUQghhNzlkIioJejUqRPCwsIQFhYmdxQiMlM8x4yIiIjITLCYEREREZkJfpRJREREZCY4Y0ZERERkJljMiIiIiMwEixkRERGRmWAxIyIiIjITLGZEREREZoLFjIiIiMhMsJgRERERmQkWMyIiIiIz8X8BCsX6FLTk0UcAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ - "s, pl_total = st.get_pl()\n", + "s, pl_total = out.data.stock_price_array, out.data.strategy_profit\n", "zeroline = zeros(s.shape[0])\n", "plt.xlabel(\"Stock price\")\n", "plt.ylabel(\"Profit/Loss\")\n", @@ -307,7 +306,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:17:03.700786Z", @@ -345,20 +344,18 @@ " },\n", " ]\n", "\n", - " st = StrategyEngine(\n", - " Inputs(\n", - " stock_price=stockprice,\n", - " start_date=startdate,\n", - " target_date=targetdate,\n", - " volatility=volatility,\n", - " interest_rate=interestrate,\n", - " min_stock=minstock,\n", - " max_stock=maxstock,\n", - " strategy=strategy,\n", - " )\n", + " inputs = Inputs(\n", + " stock_price=stockprice,\n", + " start_date=startdate,\n", + " target_date=targetdate,\n", + " volatility=volatility,\n", + " interest_rate=interestrate,\n", + " min_stock=minstock,\n", + " max_stock=maxstock,\n", + " strategy=strategy,\n", " )\n", "\n", - " out = st.run()\n", + " out = run_strategy(inputs)\n", "\n", " if out.return_in_the_domain_ratio >= 1.0:\n", " if maxpop < out.probability_of_profit:\n", @@ -370,7 +367,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:17:10.924712Z", @@ -382,8 +379,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 3.67 s, sys: 402 ms, total: 4.08 s\n", - "Wall time: 4.33 s\n" + "CPU times: total: 12 s\n", + "Wall time: 16.4 s\n" ] } ], @@ -394,7 +391,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:17:10.925263Z", @@ -416,7 +413,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:17:45.609770Z", @@ -425,25 +422,23 @@ }, "outputs": [], "source": [ - "st = StrategyEngine(\n", - " Inputs(\n", - " stock_price=stockprice,\n", - " start_date=startdate,\n", - " target_date=targetdate,\n", - " volatility=volatility,\n", - " interest_rate=interestrate,\n", - " min_stock=minstock,\n", - " max_stock=maxstock,\n", - " strategy=best_strategy,\n", - " )\n", + "inputs = Inputs(\n", + " stock_price=stockprice,\n", + " start_date=startdate,\n", + " target_date=targetdate,\n", + " volatility=volatility,\n", + " interest_rate=interestrate,\n", + " min_stock=minstock,\n", + " max_stock=maxstock,\n", + " strategy=best_strategy,\n", ")\n", "\n", - "out = st.run()" + "out = run_strategy(inputs)" ] }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:18:38.176542Z", @@ -455,18 +450,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "Days remaining to the target date: 18\n", "Strategy cost: -8293.00\n", "Maximum loss: 8293.00\n", "Maximum profit: 8707.00\n", "Profitable stock price range:\n", " 342.94 ---> inf\n", - "Probability of Profit (PoP): 49.2%\n" + "Probability of Profit (PoP): 49.1%\n" ] } ], "source": [ - "print(\"Days remaining to the target date: %d\" % st.days2target)\n", "print(\"Strategy cost: %.2f\" % out.strategy_cost)\n", "print(\"Maximum loss: %.2f\" % abs(out.minimum_return_in_the_domain))\n", "print(\"Maximum profit: %.2f\" % out.maximum_return_in_the_domain)\n", @@ -480,7 +473,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:18:40.631370Z", @@ -490,23 +483,27 @@ "outputs": [ { "data": { - "text/plain": "[]" + "text/plain": [ + "[]" + ] }, - "execution_count": 16, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { - "text/plain": "
", - "image/png": "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U35+vu688061a9fO7HLgJghdAABcYN++ffrXv/4liS4XShahCwCAC0ybNk0FBQW666671LZtW7PLgRshdAEA8P9+/fVXLV68WJI0efJkk6uBuyF0AQDw/wq7XHfffbfatGljdjlwM4QuAAAk7d27Vx9++KEkulwoHYQuAAD0vy5Xz5491bp1a7PLgRsidAEAyrw9e/boo48+ksQViyg9LhO6YmNj1bZtW1WtWlV+fn6Kjo7W3r177cZ06dJFHh4edtOQIUPsxiQnJysqKkqVKlWSn5+fRo8erby8PLsx69evV6tWrWSxWNSgQQPFx8eX9u4BAExU2OW65557dPPNN5tdDtyUy4SuDRs2aOjQodq0aZMSEhKUm5urbt26KTMz027c448/rpSUFNs0a9Ys27r8/HxFRUUpJydHGzdu1AcffKD4+HhNmjTJNubQoUOKiopS165dtX37dsXExGjw4MH66quvHLavAADH2b17t63LxblcKE0ehmEYZhdRHCdOnJCfn582bNigzp07Szrf6WrZsqXmzp17ydd8+eWXuuuuu3Ts2DH5+/tLkuLi4jR27FidOHFCnp6eGjt2rFavXq2dO3faXvfggw8qPT1da9asuararFarfH19lZGRIR8fn2vbUQBAqXrooYf00UcfKTo6WsuXLze7HJiotD+/XabT9VcZGRmSpOuuu85u+eLFi1WjRg01bdpU48eP19mzZ23rkpKS1KxZM1vgkqTIyEhZrVbt2rXLNiYiIsJum5GRkUpKSrpsLdnZ2bJarXYTAMD5/fLLL/r4448l0eVC6atgdgHFUVBQoJiYGHXo0EFNmza1LX/ooYdUp04dBQUF6eeff9bYsWO1d+9effrpp5Kk1NRUu8AlyTafmpp6xTFWq1Xnzp2Tt7f3RfXExsZq6tSpJbqPAIDS98ILL8gwDN17771q2bKl2eXAzblk6Bo6dKh27typb7/91m75E088Yftzs2bNFBgYqNtvv10HDhxQ/fr1S62e8ePHa+TIkbZ5q9Wq4ODgUns/AMC127Vrl5YsWSKJKxbhGC739eKwYcO0atUqrVu3TrVr177i2LCwMEnS/v37JUkBAQFKS0uzG1M4HxAQcMUxPj4+l+xySZLFYpGPj4/dBABwboVdrl69eql58+Zml4MywGVCl2EYGjZsmJYvX65vvvlGISEhf/ua7du3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cXCwrVu36vjx42rVqpUqVKigChUqaMOGDZo/f74qVKggf39/joeJqlWrphtvvFH79+93+O8GoauEeHp6qnXr1kpMTLQtKygoUGJiosLDw02srGwJCQlRQECA3XGwWq3avHmz7TiEh4crPT1dW7dutY355ptvVFBQoLCwMIfX7MoMw9CwYcO0fPlyffPNNwoJCbFb37p1a1WsWNHueOzdu1fJycl2x2PHjh12QTghIUE+Pj5q0qSJY3bETRUUFCg7O5vj4GC33367duzYoe3bt9umNm3aqF+/frY/czzMc+bMGR04cECBgYGO/90o8mUAuKyPP/7YsFgsRnx8vPHLL78YTzzxhFGtWjW7Kx5w7U6fPm1s27bN2LZtmyHJeOWVV4xt27YZR44cMQzDMGbMmGFUq1bN+Oyzz4yff/7ZuOeee4yQkBDj3Llztm10797duPnmm43Nmzcb3377rdGwYUOjb9++Zu2Sy3rqqacMX19fY/369UZKSoptOnv2rG3MkCFDjBtuuMH45ptvjB9++MEIDw83wsPDbevz8vKMpk2bGt26dTO2b99urFmzxqhZs6Yxfvx4M3bJZY0bN87YsGGDcejQIePnn382xo0bZ3h4eBhff/21YRgcB7NdePWiYXA8HGnUqFHG+vXrjUOHDhnfffedERERYdSoUcM4fvy4YRiOPRaErhL22muvGTfccIPh6elptGvXzti0aZPZJbmddevWGZIumvr3728YxvnbRkycONHw9/c3LBaLcfvttxt79+6128bJkyeNvn37GlWqVDF8fHyMAQMGGKdPnzZhb1zbpY6DJGPBggW2MefOnTP+8Y9/GNWrVzcqVapk3HvvvUZKSorddg4fPmz06NHD8Pb2NmrUqGGMGjXKyM3NdfDeuLaBAwcaderUMTw9PY2aNWsat99+uy1wGQbHwWx/DV0cD8fp06ePERgYaHh6ehq1atUy+vTpY+zfv9+23pHHwsMwDKPYPToAAABcFc7pAgAAcABCFwAAgAMQugAAAByA0AUAAOAAhC4AAAAHIHQBAAA4AKELAADAAQhdAAAADkDoAoC/iI+PV7Vq1RzyXuvXr5eHh8dFD9wF4H4IXQCc1okTJ/TUU0/phhtukMViUUBAgCIjI/Xdd9/Zxnh4eGjFihXmFXmN2rdvr5SUFPn6+ppdCoBSVsHsAgDgcnr16qWcnBx98MEHqlevntLS0pSYmKiTJ0+aXVqJyM3NlaenpwICAswuBYAD0OkC4JTS09P13//+VzNnzlTXrl1Vp04dtWvXTuPHj1fPnj0lSXXr1pUk3XvvvfLw8LDNS9Jbb72l+vXry9PTU40aNdKiRYsu2v6TTz4pf39/eXl5qWnTplq1atUlazlx4oTatGmje++9V9nZ2ZccU7duXU2bNk19+/ZV5cqVVatWLb3xxht2Yzw8PPTWW2+pZ8+eqly5sqZPn37Jrxe/++47denSRZUqVVL16tUVGRmpU6dOSZIKCgoUGxurkJAQeXt7q0WLFlq2bFlRfrQATELoAuCUqlSpoipVqmjFihWXDTpbtmyRJC1YsEApKSm2+eXLl2v48OEaNWqUdu7cqSeffFIDBgzQunXrJJ0PLj169NB3332nf/3rX/rll180Y8YMlS9f/qL3OHr0qDp16qSmTZtq2bJlslgsl6159uzZatGihbZt26Zx48Zp+PDhSkhIsBszZcoU3XvvvdqxY4cGDhx40Ta2b9+u22+/XU2aNFFSUpK+/fZb3X333crPz5ckxcbGauHChYqLi9OuXbs0YsQIPfzww9qwYcNV/FQBmMoAACe1bNkyo3r16oaXl5fRvn17Y/z48cZPP/1kN0aSsXz5crtl7du3Nx5//HG7Zb179zbuvPNOwzAM46uvvjLKlStn7N2795Lvu2DBAsPX19fYs2ePERwcbDzzzDNGQUHBFWutU6eO0b17d7tlffr0MXr06GFXa0xMjN2YdevWGZKMU6dOGYZhGH379jU6dOhwyffIysoyKlWqZGzcuNFu+aBBg4y+fftesT4A5qPTBcBp9erVS8eOHdPKlSvVvXt3rV+/Xq1atVJ8fPwVX7d792516NDBblmHDh20e/duSee7SbVr19aNN9542W2cO3dOnTp10n333ad58+bJw8Pjb+sNDw+/aL7wPQu1adPmitso7HRdyv79+3X27Fndcccdtk5glSpVtHDhQh04cOBv6wNgLk6kB+DUvLy8dMcdd+iOO+7QxIkTNXjwYE2ePFmPPfZYsbfp7e39t2MsFosiIiK0atUqjR49WrVq1Sr2+12ocuXKxa7tzJkzkqTVq1dfVM+VvvYE4BzodAFwKU2aNFFmZqZtvmLFirbznQo1btzY7rYS0vmT05s0aSJJat68uX777Tf9+uuvl32fcuXKadGiRWrdurW6du2qY8eO/W1tmzZtumi+cePGf/u6CzVv3lyJiYmXXNekSRNZLBYlJyerQYMGdlNwcHCR3geA49HpAuCUTp48qd69e2vgwIFq3ry5qlatqh9++EGzZs3SPffcYxtXt25dJSYmqkOHDrJYLKpevbpGjx6tBx54QDfffLMiIiL0+eef69NPP9XatWslSbfeeqs6d+6sXr166ZVXXlGDBg20Z88eeXh4qHv37rZtly9fXosXL1bfvn112223af369Ve8vcN3332nWbNmKTo6WgkJCVq6dKlWr15dpP0eP368mjVrpn/84x8aMmSIPD09tW7dOvXu3Vs1atTQs88+qxEjRqigoEAdO3ZURkaGvvvuO/n4+Kh///5F/CkDcCizTyoDgEvJysoyxo0bZ7Rq1crw9fU1KlWqZDRq1Mh4/vnnjbNnz9rGrVy50mjQoIFRoUIFo06dOrblb775plGvXj2jYsWKxo033mgsXLjQbvsnT540BgwYYFx//fWGl5eX0bRpU2PVqlWGYfzvRPpCubm5xn333Wc0btzYSEtLu2S9derUMaZOnWr07t3bqFSpkhEQEGDMmzfPbowucdL/X0+kNwzDWL9+vdG+fXvDYrEY1apVMyIjI23rCwoKjLlz5xqNGjUyKlasaNSsWdOIjIw0NmzYcJU/WQBm8TAMwzA7+AGAq6tbt65iYmIUExNjdikAnBTndAEAADgAoQsAAMAB+HoRAADAAeh0AQAAOAChCwAAwAEIXQAAAA5A6AIAAHAAQhcAAIADELoAAAAcgNAFAADgAIQuAAAAB/g/slT2EPAQYu8AAAAASUVORK5CYII=" + "image/png": "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U35+vu688061a9fO7HLgJghdAABcYN++ffrXv/4liS4XShahCwCAC0ybNk0FBQW666671LZtW7PLgRshdAEA8P9+/fVXLV68WJI0efJkk6uBuyF0AQDw/wq7XHfffbfatGljdjlwM4QuAAAk7d27Vx9++KEkulwoHYQuAAD0vy5Xz5491bp1a7PLgRsidAEAyrw9e/boo48+ksQViyg9LhO6YmNj1bZtW1WtWlV+fn6Kjo7W3r177cZ06dJFHh4edtOQIUPsxiQnJysqKkqVKlWSn5+fRo8erby8PLsx69evV6tWrWSxWNSgQQPFx8eX9u4BAExU2OW65557dPPNN5tdDtyUy4SuDRs2aOjQodq0aZMSEhKUm5urbt26KTMz027c448/rpSUFNs0a9Ys27r8/HxFRUUpJydHGzdu1AcffKD4+HhNmjTJNubQoUOKiopS165dtX37dsXExGjw4MH66quvHLavAADH2b17t63LxblcKE0ehmEYZhdRHCdOnJCfn582bNigzp07Szrf6WrZsqXmzp17ydd8+eWXuuuuu3Ts2DH5+/tLkuLi4jR27FidOHFCnp6eGjt2rFavXq2dO3faXvfggw8qPT1da9asuararFarfH19lZGRIR8fn2vbUQBAqXrooYf00UcfKTo6WsuXLze7HJiotD+/XabT9VcZGRmSpOuuu85u+eLFi1WjRg01bdpU48eP19mzZ23rkpKS1KxZM1vgkqTIyEhZrVbt2rXLNiYiIsJum5GRkUpKSrpsLdnZ2bJarXYTAMD5/fLLL/r4448l0eVC6atgdgHFUVBQoJiYGHXo0EFNmza1LX/ooYdUp04dBQUF6eeff9bYsWO1d+9effrpp5Kk1NRUu8AlyTafmpp6xTFWq1Xnzp2Tt7f3RfXExsZq6tSpJbqPAIDS98ILL8gwDN17771q2bKl2eXAzblk6Bo6dKh27typb7/91m75E088Yftzs2bNFBgYqNtvv10HDhxQ/fr1S62e8ePHa+TIkbZ5q9Wq4ODgUns/AMC127Vrl5YsWSKJKxbhGC739eKwYcO0atUqrVu3TrVr177i2LCwMEnS/v37JUkBAQFKS0uzG1M4HxAQcMUxPj4+l+xySZLFYpGPj4/dBABwboVdrl69eql58+Zml4MywGVCl2EYGjZsmJYvX65vvvlGISEhf/ua7du3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cXCwrVu36vjx42rVqpUqVKigChUqaMOGDZo/f74qVKggf39/joeJqlWrphtvvFH79+93+O8GoauEeHp6qnXr1kpMTLQtKygoUGJiosLDw02srGwJCQlRQECA3XGwWq3avHmz7TiEh4crPT1dW7dutY355ptvVFBQoLCwMIfX7MoMw9CwYcO0fPlyffPNNwoJCbFb37p1a1WsWNHueOzdu1fJycl2x2PHjh12QTghIUE+Pj5q0qSJY3bETRUUFCg7O5vj4GC33367duzYoe3bt9umNm3aqF+/frY/czzMc+bMGR04cECBgYGO/90o8mUAuKyPP/7YsFgsRnx8vPHLL78YTzzxhFGtWjW7Kx5w7U6fPm1s27bN2LZtmyHJeOWVV4xt27YZR44cMQzDMGbMmGFUq1bN+Oyzz4yff/7ZuOeee4yQkBDj3Llztm10797duPnmm43Nmzcb3377rdGwYUOjb9++Zu2Sy3rqqacMX19fY/369UZKSoptOnv2rG3MkCFDjBtuuMH45ptvjB9++MEIDw83wsPDbevz8vKMpk2bGt26dTO2b99urFmzxqhZs6Yxfvx4M3bJZY0bN87YsGGDcejQIePnn382xo0bZ3h4eBhff/21YRgcB7NdePWiYXA8HGnUqFHG+vXrjUOHDhnfffedERERYdSoUcM4fvy4YRiOPRaErhL22muvGTfccIPh6elptGvXzti0aZPZJbmddevWGZIumvr3728YxvnbRkycONHw9/c3LBaLcfvttxt79+6128bJkyeNvn37GlWqVDF8fHyMAQMGGKdPnzZhb1zbpY6DJGPBggW2MefOnTP+8Y9/GNWrVzcqVapk3HvvvUZKSorddg4fPmz06NHD8Pb2NmrUqGGMGjXKyM3NdfDeuLaBAwcaderUMTw9PY2aNWsat99+uy1wGQbHwWx/DV0cD8fp06ePERgYaHh6ehq1atUy+vTpY+zfv9+23pHHwsMwDKPYPToAAABcFc7pAgAAcABCFwAAgAMQugAAAByA0AUAAOAAhC4AAAAHIHQBAAA4AKELAADAAQhdAAAADkDoAoC/iI+PV7Vq1RzyXuvXr5eHh8dFD9wF4H4IXQCc1okTJ/TUU0/phhtukMViUUBAgCIjI/Xdd9/Zxnh4eGjFihXmFXmN2rdvr5SUFPn6+ppdCoBSVsHsAgDgcnr16qWcnBx98MEHqlevntLS0pSYmKiTJ0+aXVqJyM3NlaenpwICAswuBYAD0OkC4JTS09P13//+VzNnzlTXrl1Vp04dtWvXTuPHj1fPnj0lSXXr1pUk3XvvvfLw8LDNS9Jbb72l+vXry9PTU40aNdKiRYsu2v6TTz4pf39/eXl5qWnTplq1atUlazlx4oTatGmje++9V9nZ2ZccU7duXU2bNk19+/ZV5cqVVatWLb3xxht2Yzw8PPTWW2+pZ8+eqly5sqZPn37Jrxe/++47denSRZUqVVL16tUVGRmpU6dOSZIKCgoUGxurkJAQeXt7q0WLFlq2bFlRfrQATELoAuCUqlSpoipVqmjFihWXDTpbtmyRJC1YsEApKSm2+eXLl2v48OEaNWqUdu7cqSeffFIDBgzQunXrJJ0PLj169NB3332nf/3rX/rll180Y8YMlS9f/qL3OHr0qDp16qSmTZtq2bJlslgsl6159uzZatGihbZt26Zx48Zp+PDhSkhIsBszZcoU3XvvvdqxY4cGDhx40Ta2b9+u22+/XU2aNFFSUpK+/fZb3X333crPz5ckxcbGauHChYqLi9OuXbs0YsQIPfzww9qwYcNV/FQBmMoAACe1bNkyo3r16oaXl5fRvn17Y/z48cZPP/1kN0aSsXz5crtl7du3Nx5//HG7Zb179zbuvPNOwzAM46uvvjLKlStn7N2795Lvu2DBAsPX19fYs2ePERwcbDzzzDNGQUHBFWutU6eO0b17d7tlffr0MXr06GFXa0xMjN2YdevWGZKMU6dOGYZhGH379jU6dOhwyffIysoyKlWqZGzcuNFu+aBBg4y+fftesT4A5qPTBcBp9erVS8eOHdPKlSvVvXt3rV+/Xq1atVJ8fPwVX7d792516NDBblmHDh20e/duSee7SbVr19aNN9542W2cO3dOnTp10n333ad58+bJw8Pjb+sNDw+/aL7wPQu1adPmitso7HRdyv79+3X27Fndcccdtk5glSpVtHDhQh04cOBv6wNgLk6kB+DUvLy8dMcdd+iOO+7QxIkTNXjwYE2ePFmPPfZYsbfp7e39t2MsFosiIiK0atUqjR49WrVq1Sr2+12ocuXKxa7tzJkzkqTVq1dfVM+VvvYE4BzodAFwKU2aNFFmZqZtvmLFirbznQo1btzY7rYS0vmT05s0aSJJat68uX777Tf9+uuvl32fcuXKadGiRWrdurW6du2qY8eO/W1tmzZtumi+cePGf/u6CzVv3lyJiYmXXNekSRNZLBYlJyerQYMGdlNwcHCR3geA49HpAuCUTp48qd69e2vgwIFq3ry5qlatqh9++EGzZs3SPffcYxtXt25dJSYmqkOHDrJYLKpevbpGjx6tBx54QDfffLMiIiL0+eef69NPP9XatWslSbfeeqs6d+6sXr166ZVXXlGDBg20Z88eeXh4qHv37rZtly9fXosXL1bfvn112223af369Ve8vcN3332nWbNmKTo6WgkJCVq6dKlWr15dpP0eP368mjVrpn/84x8aMmSIPD09tW7dOvXu3Vs1atTQs88+qxEjRqigoEAdO3ZURkaGvvvuO/n4+Kh///5F/CkDcCizTyoDgEvJysoyxo0bZ7Rq1crw9fU1KlWqZDRq1Mh4/vnnjbNnz9rGrVy50mjQoIFRoUIFo06dOrblb775plGvXj2jYsWKxo033mgsXLjQbvsnT540BgwYYFx//fWGl5eX0bRpU2PVqlWGYfzvRPpCubm5xn333Wc0btzYSEtLu2S9derUMaZOnWr07t3bqFSpkhEQEGDMmzfPbowucdL/X0+kNwzDWL9+vdG+fXvDYrEY1apVMyIjI23rCwoKjLlz5xqNGjUyKlasaNSsWdOIjIw0NmzYcJU/WQBm8TAMwzA7+AGAq6tbt65iYmIUExNjdikAnBTndAEAADgAoQsAAMAB+HoRAADAAeh0AQAAOAChCwAAwAEIXQAAAA5A6AIAAHAAQhcAAIADELoAAAAcgNAFAADgAIQuAAAAB/g/slT2EPAQYu8AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ - "s, pl_total = st.get_pl()\n", + "s, pl_total = out.data.stock_price_array, out.data.strategy_profit\n", "zeroline = zeros(s.shape[0])\n", "plt.xlabel(\"Stock price\")\n", "plt.ylabel(\"Profit/Loss\")\n", @@ -514,6 +511,13 @@ "plt.plot(s, zeroline, \"m-\")\n", "plt.plot(s, pl_total, \"k-\")" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -532,7 +536,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.4" + "version": "3.11.7" } }, "nbformat": 4, diff --git a/examples/covered_call.ipynb b/examples/covered_call.ipynb index 8be049c..e63e469 100644 --- a/examples/covered_call.ipynb +++ b/examples/covered_call.ipynb @@ -34,7 +34,7 @@ "import matplotlib.pyplot as plt\n", "from numpy import zeros\n", "\n", - "from optionlab import VERSION, Inputs, StrategyEngine\n", + "from optionlab import VERSION, run_strategy\n", "\n", "%matplotlib inline" ] @@ -53,8 +53,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Python version: 3.10.13 (main, Aug 24 2023, 12:59:26) [Clang 15.0.0 (clang-1500.0.40.1)]\n", - "OptionLab version: 0.1.7\n" + "Python version: 3.11.7 | packaged by Anaconda, Inc. | (main, Dec 15 2023, 18:05:47) [MSC v.1916 64 bit (AMD64)]\n", + "OptionLab version: 1.2.0\n" ] } ], @@ -72,7 +72,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:23:39.792313Z", @@ -81,35 +81,33 @@ }, "outputs": [], "source": [ - "stockprice = 164.04\n", + "stock_price = 164.04\n", "volatility = 0.272\n", - "startdate = dt.date(2021, 11, 22)\n", - "targetdate = dt.date(2021, 12, 17)\n", - "interestrate = 0.0002\n", - "minstock = stockprice - round(stockprice * 0.5, 2)\n", - "maxstock = stockprice + round(stockprice * 0.5, 2)\n", + "start_date = dt.date(2021, 11, 22)\n", + "target_date = dt.date(2021, 12, 17)\n", + "interest_rate = 0.0002\n", + "min_stock = stock_price - round(stock_price * 0.5, 2)\n", + "max_stock = stock_price + round(stock_price * 0.5, 2)\n", "strategy = [\n", " {\"type\": \"stock\", \"n\": 100, \"action\": \"buy\"},\n", " {\"type\": \"call\", \"strike\": 175.00, \"premium\": 1.15, \"n\": 100, \"action\": \"sell\"},\n", "]\n", "\n", - "st = StrategyEngine(\n", - " Inputs(\n", - " stock_price=stockprice,\n", - " start_date=startdate,\n", - " target_date=targetdate,\n", - " volatility=volatility,\n", - " interest_rate=interestrate,\n", - " min_stock=minstock,\n", - " max_stock=maxstock,\n", - " strategy=strategy,\n", - " )\n", - ")" + "inputs = {\n", + " \"stock_price\": stock_price,\n", + " \"start_date\": start_date,\n", + " \"target_date\": target_date,\n", + " \"volatility\": volatility,\n", + " \"interest_rate\": interest_rate,\n", + " \"min_stock\": min_stock,\n", + " \"max_stock\": max_stock,\n", + " \"strategy\": strategy,\n", + "}" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:23:43.166312Z", @@ -121,14 +119,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 2.74 ms, sys: 1.89 ms, total: 4.63 ms\n", - "Wall time: 3.31 ms\n" + "CPU times: total: 46.9 ms\n", + "Wall time: 92.5 ms\n" ] } ], "source": [ "%%time\n", - "out = st.run()" + "out = run_strategy(inputs)" ] }, { @@ -140,7 +138,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:23:46.516713Z", @@ -150,27 +148,31 @@ "outputs": [ { "data": { - "text/plain": "" + "text/plain": [ + "" + ] }, - "execution_count": 8, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { - "text/plain": "
", - "image/png": "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NXh7a8f370OvXi+O9fRMaA8Nha5dXxzbsGHC+0ZGQufOL469d28j+/e3oUCBApw5c4YePVwSfkecPQMXLoCtHTRrRrU6diZfp08+gUR/C5soV87069+jx4v3xS5e3PR3z4ABcO9e8rEFCmg/l/GGDdO+zsnJnRsSr+s6bpz2/UtO9uywYkXybUKkhTRf8km9gbCwMLV8+XLl6+urfH191YoVK9SzZ8/e5CUtQkhIiAIUhCitnDK9tWtnGm8wJI2JvzVvbhrr6Pji2Pr1TWPz5n1xbI0aprHFir04tmxZ09gKFV4cW6iQaWytWi+OzZXLNLZx4xfH2tubxrZs+eJYUCo2NiG2Y8eXxz55khDbtevLY4OCEmL79Xt57F9/JcSOGPHy2NOnE2InTXp57KFDCbGzZr08dufOhNjFi18e+8svCbGrV7889ocfEmLXrn157MqVCbG//vry2IULE2L37n157PTpCbFHj748dvz4hNhz514eO3RoQuzff788tnfvhNj7918e+8knCbHPnr08FtYqQP32229KqVf7HZEt24tjzf13REiIEiJNxX9+h6TRD9sbrdPl4OBAjx49TB67evUqvXv3ZvvLLhdkEqtWgYND0scLFjS9//33L36N52eA+/lBTEzysblzm95fskT7izo5iYeHgHZVIyws+djni/0ZM1781/Hz5ztpEjx8mHysra3p/dGjoVu35GOtrU3v+/rCBx8kHwumSxX165dw9SQ5/24hCoCPDzRq9OLYxF+LTz6BmjVfHJt4wfAOHbSrDC9SoEDCcatW2tXFFylePOG4eXN42a5bZcsmHDdqpF19e5HKlROO3d3hq69eHJv4vGvUePnViLp1E44rVnx5bOKRCaVKabvZpCSHIkVg2bIXx1avnnDs6gpLl744NvHXIUeOl8cm/p5my/byK4mlSiUc29hoVzefFxkZyZQpn/PgwRF8fHyM26t9+SUQFwdTp8CdO1DjLeN/lud/VubMefHviPgrr/GmTXvxlfPEP78AEydqV/OSk2h9bED7v/zoUfKxjo6m94cOhbt3k4+1t9f+jYnRrrrNng3HjkGJEsnHC5HRvdGK9Mk5efIk1atXJzY2NjVf1qzIivRCiNcxYMAAvvzySwoVKsTp06dxdnY2Dfj9d63P9ddfX15tW5i4OG0Yxp492vCM3bsThg8IkZrS+vNb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" + "image/png": "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NXh7a8f370OvXi+O9fRMaA8Nha5dXxzbsGHC+0ZGQufOL469d28j+/e3oUCBApw5c4YePVwSfkecPQMXLoCtHTRrRrU6diZfp08+gUR/C5soV87069+jx4v3xS5e3PR3z4ABcO9e8rEFCmg/l/GGDdO+zsnJnRsSr+s6bpz2/UtO9uywYkXybUKkhTRf8km9gbCwMLV8+XLl6+urfH191YoVK9SzZ8/e5CUtQkhIiAIUhCitnDK9tWtnGm8wJI2JvzVvbhrr6Pji2Pr1TWPz5n1xbI0aprHFir04tmxZ09gKFV4cW6iQaWytWi+OzZXLNLZx4xfH2tubxrZs+eJYUCo2NiG2Y8eXxz55khDbtevLY4OCEmL79Xt57F9/JcSOGPHy2NOnE2InTXp57KFDCbGzZr08dufOhNjFi18e+8svCbGrV7889ocfEmLXrn157MqVCbG//vry2IULE2L37n157PTpCbFHj748dvz4hNhz514eO3RoQuzff788tnfvhNj7918e+8knCbHPnr08FtYqQP32229KqVf7HZEt24tjzf13REiIEiJNxX9+h6TRD9sbrdPl4OBAjx49TB67evUqvXv3ZvvLLhdkEqtWgYND0scLFjS9//33L36N52eA+/lBTEzysblzm95fskT7izo5iYeHgHZVIyws+djni/0ZM1781/Hz5ztpEjx8mHysra3p/dGjoVu35GOtrU3v+/rCBx8kHwumSxX165dw9SQ5/24hCoCPDzRq9OLYxF+LTz6BmjVfHJt4wfAOHbSrDC9SoEDCcatW2tXFFylePOG4eXN42a5bZcsmHDdqpF19e5HKlROO3d3hq69eHJv4vGvUePnViLp1E44rVnx5bOKRCaVKabvZpCSHIkVg2bIXx1avnnDs6gpLl744NvHXIUeOl8cm/p5my/byK4mlSiUc29hoVzefFxkZyZQpn/PgwRF8fHyM26t9+SUQFwdTp8CdO1DjLeN/lud/VubMefHviPgrr/GmTXvxlfPEP78AEydqV/OSk2h9bED7v/zoUfKxjo6m94cOhbt3k4+1t9f+jYnRrrrNng3HjkGJEsnHC5HRvdGK9Mk5efIk1atXJzY2NjVf1qzIivRCiNcxYMAAvvzySwoVKsTp06dxdnY2Dfj9d63P9ddfX15tW5i4OG0Yxp492vCM3bsThg8IkZrS+vNb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", + "text/plain": [ + "
" + ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ - "s, pl_total = st.get_pl()\n", + "s, pl_total = out.data.stock_price_array, out.data.strategy_profit\n", "leg = []\n", "\n", "for i in range(len(strategy)):\n", - " leg.append(st.get_pl(i)[1])\n", + " leg.append(out.data.profit[i])\n", "\n", "zeroline = zeros(s.shape[0])\n", "plt.xlabel(\"Stock price\")\n", @@ -193,7 +195,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:24:34.070723Z", @@ -205,18 +207,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "Days remaining to the target date: 18\n", "Strategy cost: -16289.00\n", "Maximum loss: 8087.00\n", "Maximum profit: 1211.00\n", "Profitable stock price range:\n", " 162.90 ---> inf\n", - "Probability of Profit (PoP): 52.4%\n" + "Probability of Profit (PoP): 52.2%\n" ] } ], "source": [ - "print(\"Days remaining to the target date: %d\" % st.days2target)\n", "print(\"Strategy cost: %.2f\" % out.strategy_cost)\n", "print(\"Maximum loss: %.2f\" % abs(out.minimum_return_in_the_domain))\n", "print(\"Maximum profit: %.2f\" % out.maximum_return_in_the_domain)\n", @@ -227,11 +227,18 @@ "\n", "print(\"Probability of Profit (PoP): %.1f%%\" % (out.probability_of_profit * 100.0))" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -245,7 +252,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.11.7" } }, "nbformat": 4, diff --git a/examples/naked_call.ipynb b/examples/naked_call.ipynb index be16f25..dff59a7 100644 --- a/examples/naked_call.ipynb +++ b/examples/naked_call.ipynb @@ -31,7 +31,7 @@ "import datetime as dt\n", "import sys\n", "\n", - "from optionlab import VERSION, StrategyEngine, Inputs, plot_pl\n", + "from optionlab import VERSION, run_strategy, Inputs, plot_pl\n", "\n", "%matplotlib inline" ] @@ -45,8 +45,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Python version: 3.7.6 (default, Jan 8 2020, 20:23:39) [MSC v.1916 64 bit (AMD64)]\n", - "OptionLab version: 0.1.5\n" + "Python version: 3.11.7 | packaged by Anaconda, Inc. | (main, Dec 15 2023, 18:05:47) [MSC v.1916 64 bit (AMD64)]\n", + "OptionLab version: 1.2.0\n" ] } ], @@ -73,28 +73,26 @@ }, "outputs": [], "source": [ - "stockprice = 164.04\n", + "stock_price = 164.04\n", "volatility = 0.272\n", - "startdate = dt.date(2021, 11, 22)\n", - "targetdate = dt.date(2021, 12, 17)\n", - "interestrate = 0.0002\n", - "minstock = stockprice - round(stockprice * 0.5, 2)\n", - "maxstock = stockprice + round(stockprice * 0.5, 2)\n", + "start_date = dt.date(2021, 11, 22)\n", + "target_date = dt.date(2021, 12, 17)\n", + "interest_rate = 0.0002\n", + "min_stock = stock_price - round(stock_price * 0.5, 2)\n", + "max_stock = stock_price + round(stock_price * 0.5, 2)\n", "strategy = [\n", " {\"type\": \"call\", \"strike\": 175.00, \"premium\": 1.15, \"n\": 100, \"action\": \"sell\"}\n", "]\n", "\n", - "st = StrategyEngine(\n", - " Inputs(\n", - " stock_price=stockprice,\n", - " start_date=startdate,\n", - " target_date=targetdate,\n", - " volatility=volatility,\n", - " interest_rate=interestrate,\n", - " min_stock=minstock,\n", - " max_stock=maxstock,\n", - " strategy=strategy,\n", - " )\n", + "inputs = Inputs(\n", + " stock_price=stock_price,\n", + " start_date=start_date,\n", + " target_date=target_date,\n", + " volatility=volatility,\n", + " interest_rate=interest_rate,\n", + " min_stock=min_stock,\n", + " max_stock=max_stock,\n", + " strategy=strategy,\n", ")" ] }, @@ -112,14 +110,14 @@ "name": "stdout", "output_type": "stream", "text": [ - "CPU times: user 2.23 ms, sys: 1.28 ms, total: 3.51 ms\n", - "Wall time: 2.57 ms\n" + "CPU times: total: 62.5 ms\n", + "Wall time: 118 ms\n" ] } ], "source": [ "%%time\n", - "out = st.run()" + "out = run_strategy(inputs)" ] }, { @@ -150,8 +148,10 @@ }, { "data": { - "text/plain": "
", - "image/png": "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RCWQv7fdzp07sXXrVrlTogpU5sIuLi5O768Aa2trvPXWW1iyZAkOHz6MqKgoNGzYsFySJCIiopLz8PDApEmTALC3nbkpc2FXr149JCQkFNj+6NEj1K9fH6+88goftSYiIpLJlClT0KBBA9y5cwfTpk2TOx2qIGUu7IQQhfazS0lJgY0Nu6gTERHJKa+3HQB89dVX+OOPP2TOiCpCqRvcjB8/HgCgUCgwffp0vZ52OTk5OH78ODw9PcstQSIiU2RjZYMDAw9I/01kCD4+Pujfvz++++47DB06lL3tzECp/++ePn0aQO4du/Pnz0Op/KepplKpRIsWLTBhwoTyy5CIyARZWliig3sHudMgM7BgwQLs2rULZ86cweLFixEYGCh3SmRApZ55Is+gQYOwePFizqxQCM48QURElck333yDIUOGwM7ODpcuXYKbm5vcKVEpGHTmiTwREREsWoiIykibo8Wy35dh2e/LOPMEGdygQYPQrl07pKWlYcSIEextZ8JKdceuV69eWLNmDRwcHNCrV69iY3/66afnTs5Y8Y4dET1LalYqqoRWAQCkBKfAXmkvc0Zk6i5dugRPT09otVps2bIFvXv3ljslKiGD3bFTq9XSk7AODg5Qq9VFLkRERFR5PN3bLikpSeaMyBBK9fBEz549pVYma9asMUQ+REREZCBTp07Fjz/+iD///BPTpk3D0qVL5U6Jylmp7tj17NkTiYmJAABLS0vcv3/fEDkRERGRAdjY2GDlypUAgGXLluH333+XOSMqb6Uq7JycnHDs2DEARTcoJiIiosqrU6dOGDBgAIQQGDp0KLKzs+VOicpRqQq7gIAA9OjRA5aWllAoFNBoNLC0tCx0ISIiosppwYIFeOGFF3D27FksXrxY7nSoHJW6j11sbCz+/PNPdO/eHREREXB0dCw0rkePHuWRn1HiU7FE9Cx8Kpbk9u2332Lw4MGws7PDxYsX4e7uLndKVITS1BVlblA8a9YsBAUF6U0pRrlY2BHRs2TrsrH3z70AAN8GvrCy4DRPVLGEEOjQoQMOHz6Mt99+Gzt37uRXrCqpCins8iQkJODy5csAgEaNGsHJyel5DmcSWNgREZExiImJQYsWLaDVarF582a89957cqdEhaiQmSfS0tLwySefwMXFBe3bt0f79u3h4uKCwYMHIy0trayHJSIiogrSpEkTTJ48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" + "image/png": "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RCWQv7fdzp07sXXrVrlTogpU5sIuLi5O768Aa2trvPXWW1iyZAkOHz6MqKgoNGzYsFySJCIiopLz8PDApEmTALC3nbkpc2FXr149JCQkFNj+6NEj1K9fH6+88goftSYiIpLJlClT0KBBA9y5cwfTpk2TOx2qIGUu7IQQhfazS0lJgY0Nu6gTERHJKa+3HQB89dVX+OOPP2TOiCpCqRvcjB8/HgCgUCgwffp0vZ52OTk5OH78ODw9PcstQSIiU2RjZYMDAw9I/01kCD4+Pujfvz++++47DB06lL3tzECp/++ePn0aQO4du/Pnz0Op/KepplKpRIsWLTBhwoTyy5CIyARZWliig3sHudMgM7BgwQLs2rULZ86cweLFixEYGCh3SmRApZ55Is+gQYOwePFizqxQCM48QURElck333yDIUOGwM7ODpcuXYKbm5vcKVEpGHTmiTwREREsWoiIykibo8Wy35dh2e/LOPMEGdygQYPQrl07pKWlYcSIEextZ8JKdceuV69eWLNmDRwcHNCrV69iY3/66afnTs5Y8Y4dET1LalYqqoRWAQCkBKfAXmkvc0Zk6i5dugRPT09otVps2bIFvXv3ljslKiGD3bFTq9XSk7AODg5Qq9VFLkRERFR5PN3bLikpSeaMyBBK9fBEz549pVYma9asMUQ+REREZCBTp07Fjz/+iD///BPTpk3D0qVL5U6Jylmp7tj17NkTiYmJAABLS0vcv3/fEDkRERGRAdjY2GDlypUAgGXLluH333+XOSMqb6Uq7JycnHDs2DEARTcoJiIiosqrU6dOGDBgAIQQGDp0KLKzs+VOicpRqQq7gIAA9OjRA5aWllAoFNBoNLC0tCx0ISIiosppwYIFeOGFF3D27FksXrxY7nSoHJW6j11sbCz+/PNPdO/eHREREXB0dCw0rkePHuWRn1HiU7FE9Cx8Kpbk9u2332Lw4MGws7PDxYsX4e7uLndKVITS1BVlblA8a9YsBAUF6U0pRrlY2BHRs2TrsrH3z70AAN8GvrCy4DRPVLGEEOjQoQMOHz6Mt99+Gzt37uRXrCqpCins8iQkJODy5csAgEaNGsHJyel5DmcSWNgREZExiImJQYsWLaDVarF582a89957cqdEhaiQmSfS0tLwySefwMXFBe3bt0f79u3h4uKCwYMHIy0trayHJSIiogrSpEkTTJ48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", + "text/plain": [ + "
" + ] }, "metadata": {}, "output_type": "display_data" @@ -170,7 +170,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2024-03-13T02:28:17.014464Z", @@ -182,17 +182,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "Days remaining to the target date: 18\n", "Maximum loss: 6987.00\n", "Maximum profit: 115.00\n", "Profitable stock price range:\n", " 0.00 ---> 176.14\n", - "Probability of Profit (PoP): 84.5%\n" + "Probability of Profit (PoP): 83.9%\n" ] } ], "source": [ - "print(\"Days remaining to the target date: %d\" % st.days2target)\n", "print(\"Maximum loss: %.2f\" % abs(out.minimum_return_in_the_domain))\n", "print(\"Maximum profit: %.2f\" % out.maximum_return_in_the_domain)\n", "print(\"Profitable stock price range:\")\n", @@ -202,11 +200,18 @@ "\n", "print(\"Probability of Profit (PoP): %.1f%%\" % (out.probability_of_profit * 100.0))" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -220,7 +225,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.11.7" } }, "nbformat": 4, diff --git a/examples/pop_calculator.ipynb b/examples/pop_calculator.ipynb index dabf297..8a00ff0 100644 --- a/examples/pop_calculator.ipynb +++ b/examples/pop_calculator.ipynb @@ -13,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2024-03-15T17:51:40.653496Z", @@ -29,7 +29,7 @@ "\n", "from scipy import stats\n", "\n", - "from optionlab import VERSION, get_d1_d2, get_pop" + "from optionlab import VERSION, get_d1_d2, get_pop, ProbabilityOfProfitInputs" ] }, { @@ -46,8 +46,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Python version: 3.10.13 (main, Aug 24 2023, 12:59:26) [Clang 15.0.0 (clang-1500.0.40.1)]\n", - "optionlab version: 1.0.0\n" + "Python version: 3.11.7 | packaged by Anaconda, Inc. | (main, Dec 15 2023, 18:05:47) [MSC v.1916 64 bit (AMD64)]\n", + "optionlab version: 1.2.0\n" ] } ], @@ -76,12 +76,12 @@ }, "outputs": [], "source": [ - "stockprice = 100.0\n", + "stock_price = 100.0\n", "s1, s2 = 95, 105\n", - "interestrate = 1.0\n", - "dividendyield = 0.0\n", + "interest_rate = 1.0\n", + "dividend_yield = 0.0\n", "volatility = 20.0\n", - "days2maturity = 60" + "days_to_maturity = 60" ] }, { @@ -102,10 +102,10 @@ }, "outputs": [], "source": [ - "interestrate = interestrate / 100\n", + "interest_rate = interest_rate / 100\n", "volatility = volatility / 100\n", - "dividendyield = dividendyield / 100\n", - "time_to_maturity = days2maturity / 365" + "dividend_yield = dividend_yield / 100\n", + "time_to_maturity = days_to_maturity / 365" ] }, { @@ -136,10 +136,10 @@ "source": [ "d2 = [\n", " get_d1_d2(\n", - " stockprice, s1, interestrate, volatility, time_to_maturity, dividendyield\n", + " stock_price, s1, interest_rate, volatility, time_to_maturity, dividend_yield\n", " )[1],\n", " get_d1_d2(\n", - " stockprice, s2, interestrate, volatility, time_to_maturity, dividendyield\n", + " stock_price, s2, interest_rate, volatility, time_to_maturity, dividend_yield\n", " )[1],\n", "]\n", "pop1 = stats.norm.cdf(d2[0]) - stats.norm.cdf(d2[1])\n", @@ -174,20 +174,29 @@ "source": [ "pop2 = get_pop(\n", " [[s1, s2]],\n", - " \"black-scholes\",\n", - " stock_price=stockprice,\n", - " volatility=volatility,\n", - " interest_rate=interestrate,\n", - " years_to_maturity=time_to_maturity,\n", - " dividend_yield=dividendyield,\n", + " ProbabilityOfProfitInputs(\n", + " source=\"black-scholes\",\n", + " stock_price=stock_price,\n", + " volatility=volatility,\n", + " interest_rate=interest_rate,\n", + " years_to_maturity=time_to_maturity,\n", + " dividend_yield=dividend_yield,\n", + " ),\n", ")\n", "print(\"===> Probability of Profit (PoP) from getPoP(): %.2f\" % (pop2 * 100))" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -201,7 +210,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.6" + "version": "3.11.7" } }, "nbformat": 4, diff --git a/optionlab/__init__.py b/optionlab/__init__.py index 8c44b7f..85eb305 100644 --- a/optionlab/__init__.py +++ b/optionlab/__init__.py @@ -1,7 +1,7 @@ import typing -VERSION = "1.2.0" +VERSION = "1.2.1" if typing.TYPE_CHECKING: diff --git a/optionlab/engine.py b/optionlab/engine.py index 9e93503..1d77413 100644 --- a/optionlab/engine.py +++ b/optionlab/engine.py @@ -82,7 +82,6 @@ def _init_inputs(inputs: Inputs) -> EngineData: data._days_to_maturity.append(data.days_to_target) data._use_bs.append(False) elif isinstance(strategy.expiration, dt.date) and inputs.start_date: - if inputs.discard_nonbusiness_days: n_discarded_days = get_nonbusiness_days( inputs.start_date, strategy.expiration, inputs.country @@ -141,7 +140,9 @@ def _run(data: EngineData) -> EngineData: """ inputs = data.inputs - time_to_target = data.days_to_target / data._days_in_year + time_to_target = ( + data.days_to_target + 1 + ) / data._days_in_year # To consider the target date as a trading day data.cost = [0.0] * len(data.type) data.profit = zeros((len(data.type), data.stock_price_array.shape[0])) @@ -198,7 +199,7 @@ def _run(data: EngineData) -> EngineData: data._profit_target_range = get_profit_range( data.stock_price_array, data.strategy_profit, inputs.profit_target ) - data.project_target_probability = get_pop(data._profit_target_range, pop_inputs) + data.profit_target_probability = get_pop(data._profit_target_range, pop_inputs) if inputs.loss_limit is not None: data._loss_limit_rangesm = get_profit_range( @@ -236,7 +237,9 @@ def _run_option_calcs(data: EngineData, i: int) -> EngineData: return data - time_to_maturity = data._days_to_maturity[i] / data._days_in_year + time_to_maturity = ( + data._days_to_maturity[i] + 1 + ) / data._days_in_year # To consider the expiration date as a trading day bs = get_bs_info( inputs.stock_price, data.strike[i], @@ -279,8 +282,8 @@ def _run_option_calcs(data: EngineData, i: int) -> EngineData: if data._use_bs[i]: target_to_maturity = ( - data._days_to_maturity[i] - data.days_to_target - ) / data._days_in_year + data._days_to_maturity[i] - data.days_to_target + 1 + ) / data._days_in_year # To consider the expiration date as a trading day data.profit[i], data.cost[i] = get_pl_profile_bs( type, @@ -410,9 +413,9 @@ def _generate_outputs(data: EngineData) -> Outputs: if inputs.profit_target is not None: optional_outputs["probability_of_profit_target"] = ( - data.project_target_probability + data.profit_target_probability ) - optional_outputs["project_target_ranges"] = data._profit_target_range + optional_outputs["profit_target_ranges"] = data._profit_target_range if inputs.loss_limit is not None: optional_outputs["probability_of_loss_limit"] = data.loss_limit_probability diff --git a/optionlab/models.py b/optionlab/models.py index 7997862..b29389c 100644 --- a/optionlab/models.py +++ b/optionlab/models.py @@ -48,6 +48,7 @@ class StockStrategy(BaseStrategy): negative, it means that the position is closed and the difference between this price and the current price is considered in the payoff calculation. + """ type: Literal["stock"] = "stock" @@ -194,6 +195,7 @@ class Inputs(BaseModel): mc_prices_number : int, optional Number of random terminal prices to be generated when calculationg the average profit and loss of a strategy. Default is 100,000. + """ stock_price: float = Field(gt=0) @@ -323,7 +325,7 @@ class EngineData(EngineDataResults): theta: list[float] = [] cost: list[float] = [] profit_probability: float = 0.0 - project_target_probability: float = 0.0 + profit_target_probability: float = 0.0 loss_limit_probability: float = 0.0 @@ -358,7 +360,7 @@ class Outputs(BaseModel): Maximum return of the strategy within the stock price domain. probability_of_profit_target : float, optional Probability of the strategy yielding at least the profit target. - project_target_ranges : list, optional + profit_target_ranges : list, optional A list of minimum and maximum stock prices defining ranges in which the strategy makes at least the profit target. @@ -390,7 +392,7 @@ class Outputs(BaseModel): theta: list[float] vega: list[float] probability_of_profit_target: float | None = None - project_target_ranges: list[Range] | None = None + profit_target_ranges: list[Range] | None = None probability_of_loss_limit: float | None = None average_profit_from_mc: float | None = None average_loss_from_mc: float | None = None diff --git a/optionlab/support.py b/optionlab/support.py index ba9bb81..f4d1a85 100644 --- a/optionlab/support.py +++ b/optionlab/support.py @@ -279,7 +279,6 @@ def get_pop( return pop if isinstance(inputs, ProbabilityOfProfitInputs): - stock_price = inputs.stock_price volatility = inputs.volatility years_to_maturity = inputs.years_to_maturity diff --git a/poetry.lock b/poetry.lock index fd482dc..033eeb7 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry 1.4.0 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. [[package]] name = "annotated-types" version = "0.6.0" description = "Reusable constraint types to use with typing.Annotated" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -12,11 +11,119 @@ files = [ {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, ] +[[package]] +name = "anyio" +version = "4.4.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.8" +files = [ + {file = "anyio-4.4.0-py3-none-any.whl", hash = "sha256:c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7"}, + {file = "anyio-4.4.0.tar.gz", hash = "sha256:5aadc6a1bbb7cdb0bede386cac5e2940f5e2ff3aa20277e991cf028e0585ce94"}, +] + +[package.dependencies] +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} +idna = ">=2.8" +sniffio = ">=1.1" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} + +[package.extras] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.23)"] + +[[package]] +name = "appnope" +version = "0.1.4" +description = "Disable App Nap on macOS >= 10.9" +optional = false +python-versions = ">=3.6" +files = [ + {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, + {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, +] + +[[package]] +name = "argon2-cffi" +version = "23.1.0" +description = "Argon2 for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea"}, + {file = "argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08"}, +] + +[package.dependencies] +argon2-cffi-bindings = "*" + +[package.extras] +dev = ["argon2-cffi[tests,typing]", "tox (>4)"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-copybutton", "sphinx-notfound-page"] +tests = ["hypothesis", "pytest"] +typing = ["mypy"] + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +description = "Low-level CFFI bindings for Argon2" +optional = false +python-versions = ">=3.6" +files = [ + {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"}, + {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"}, + {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"}, + {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"}, + {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"}, +] + +[package.dependencies] +cffi = ">=1.0.1" + +[package.extras] +dev = ["cogapp", "pre-commit", "pytest", "wheel"] +tests = ["pytest"] + +[[package]] +name = "arrow" +version = "1.3.0" +description = "Better dates & times for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, + {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, +] + +[package.dependencies] +python-dateutil = ">=2.7.0" +types-python-dateutil = ">=2.8.10" + +[package.extras] +doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] +test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] + [[package]] name = "asttokens" version = "2.4.1" description = "Annotate AST trees with source code positions" -category = "dev" optional = false python-versions = "*" files = [ @@ -31,11 +138,78 @@ six = ">=1.12.0" astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] +[[package]] +name = "async-lru" +version = "2.0.4" +description = "Simple LRU cache for asyncio" +optional = false +python-versions = ">=3.8" +files = [ + {file = "async-lru-2.0.4.tar.gz", hash = "sha256:b8a59a5df60805ff63220b2a0c5b5393da5521b113cd5465a44eb037d81a5627"}, + {file = "async_lru-2.0.4-py3-none-any.whl", hash = "sha256:ff02944ce3c288c5be660c42dbcca0742b32c3b279d6dceda655190240b99224"}, +] + +[package.dependencies] +typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} + +[[package]] +name = "attrs" +version = "23.2.0" +description = "Classes Without Boilerplate" +optional = false +python-versions = ">=3.7" +files = [ + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, +] + +[package.extras] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] + +[[package]] +name = "babel" +version = "2.15.0" +description = "Internationalization utilities" +optional = false +python-versions = ">=3.8" +files = [ + {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, + {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, +] + +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] + +[[package]] +name = "beautifulsoup4" +version = "4.12.3" +description = "Screen-scraping library" +optional = false +python-versions = ">=3.6.0" +files = [ + {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, + {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, +] + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] +html5lib = ["html5lib"] +lxml = ["lxml"] + [[package]] name = "black" version = "24.3.0" description = "The uncompromising code formatter." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -80,11 +254,202 @@ d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] +[[package]] +name = "bleach" +version = "6.1.0" +description = "An easy safelist-based HTML-sanitizing tool." +optional = false +python-versions = ">=3.8" +files = [ + {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, + {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, +] + +[package.dependencies] +six = ">=1.9.0" +webencodings = "*" + +[package.extras] +css = ["tinycss2 (>=1.1.0,<1.3)"] + +[[package]] +name = "certifi" +version = "2024.6.2" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.6.2-py3-none-any.whl", hash = "sha256:ddc6c8ce995e6987e7faf5e3f1b02b302836a0e5d98ece18392cb1a36c72ad56"}, + {file = "certifi-2024.6.2.tar.gz", hash = "sha256:3cd43f1c6fa7dedc5899d69d3ad0398fd018ad1a17fba83ddaf78aa46c747516"}, +] + +[[package]] +name = "cffi" +version = "1.16.0" +description = "Foreign Function Interface for Python calling C code." +optional = false +python-versions = ">=3.8" +files = [ + {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, + {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, + {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, + {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, + {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, + {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, + {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, + {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, + {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, + {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, +] + +[package.dependencies] +pycparser = "*" + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + [[package]] name = "click" version = "8.1.7" description = "Composable command line interface toolkit" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -99,7 +464,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -107,11 +471,27 @@ files = [ {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] +[[package]] +name = "comm" +version = "0.2.2" +description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." +optional = false +python-versions = ">=3.8" +files = [ + {file = "comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3"}, + {file = "comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e"}, +] + +[package.dependencies] +traitlets = ">=4" + +[package.extras] +test = ["pytest"] + [[package]] name = "contourpy" version = "1.2.0" description = "Python library for calculating contours of 2D quadrilateral grids" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -175,7 +555,6 @@ test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] name = "cycler" version = "0.12.1" description = "Composable style cycles" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -187,11 +566,41 @@ files = [ docs = ["ipython", "matplotlib", "numpydoc", "sphinx"] tests = ["pytest", "pytest-cov", "pytest-xdist"] +[[package]] +name = "debugpy" +version = "1.8.1" +description = "An implementation of the Debug Adapter Protocol for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "debugpy-1.8.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741"}, + {file = "debugpy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e"}, + {file = "debugpy-1.8.1-cp310-cp310-win32.whl", hash = "sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0"}, + {file = "debugpy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd"}, + {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"}, + {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"}, + {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"}, + {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"}, + {file = "debugpy-1.8.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539"}, + {file = "debugpy-1.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace"}, + {file = "debugpy-1.8.1-cp312-cp312-win32.whl", hash = "sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0"}, + {file = "debugpy-1.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98"}, + {file = "debugpy-1.8.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39"}, + {file = "debugpy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7"}, + {file = "debugpy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9"}, + {file = "debugpy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234"}, + {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"}, + {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"}, + {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"}, + {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"}, + {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"}, + {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"}, +] + [[package]] name = "decorator" version = "5.1.1" description = "Decorators for Humans" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -199,11 +608,21 @@ files = [ {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"}, ] +[[package]] +name = "defusedxml" +version = "0.7.1" +description = "XML bomb protection for Python stdlib modules" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"}, + {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"}, +] + [[package]] name = "exceptiongroup" version = "1.2.0" description = "Backport of PEP 654 (exception groups)" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -218,7 +637,6 @@ test = ["pytest (>=6)"] name = "executing" version = "2.0.1" description = "Get the currently executing AST node of a frame, and other information" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -229,11 +647,24 @@ files = [ [package.extras] tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] +[[package]] +name = "fastjsonschema" +version = "2.19.1" +description = "Fastest Python implementation of JSON schema" +optional = false +python-versions = "*" +files = [ + {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"}, + {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"}, +] + +[package.extras] +devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"] + [[package]] name = "fonttools" version = "4.50.0" description = "Tools to manipulate font files" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -295,11 +726,32 @@ ufo = ["fs (>=2.2.0,<3)"] unicode = ["unicodedata2 (>=15.1.0)"] woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] +[[package]] +name = "fqdn" +version = "1.5.1" +description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" +optional = false +python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" +files = [ + {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"}, + {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"}, +] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + [[package]] name = "holidays" version = "0.44" description = "Generate and work with holidays in Python" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -310,11 +762,66 @@ files = [ [package.dependencies] python-dateutil = "*" +[[package]] +name = "httpcore" +version = "1.0.5" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpcore-1.0.5-py3-none-any.whl", hash = "sha256:421f18bac248b25d310f3cacd198d55b8e6125c107797b609ff9b7a6ba7991b5"}, + {file = "httpcore-1.0.5.tar.gz", hash = "sha256:34a38e2f9291467ee3b44e89dd52615370e152954ba21721378a87b2960f7a61"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.13,<0.15" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<0.26.0)"] + +[[package]] +name = "httpx" +version = "0.27.0" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, + {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] + +[[package]] +name = "idna" +version = "3.7" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, +] + [[package]] name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -322,11 +829,43 @@ files = [ {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] +[[package]] +name = "ipykernel" +version = "6.29.4" +description = "IPython Kernel for Jupyter" +optional = false +python-versions = ">=3.8" +files = [ + {file = "ipykernel-6.29.4-py3-none-any.whl", hash = "sha256:1181e653d95c6808039c509ef8e67c4126b3b3af7781496c7cbfb5ed938a27da"}, + {file = "ipykernel-6.29.4.tar.gz", hash = "sha256:3d44070060f9475ac2092b760123fadf105d2e2493c24848b6691a7c4f42af5c"}, +] + +[package.dependencies] +appnope = {version = "*", markers = "platform_system == \"Darwin\""} +comm = ">=0.1.1" +debugpy = ">=1.6.5" +ipython = ">=7.23.1" +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +matplotlib-inline = ">=0.1" +nest-asyncio = "*" +packaging = "*" +psutil = "*" +pyzmq = ">=24" +tornado = ">=6.1" +traitlets = ">=5.4.0" + +[package.extras] +cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] +pyqt5 = ["pyqt5"] +pyside6 = ["pyside6"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.23.5)", "pytest-cov", "pytest-timeout"] + [[package]] name = "ipython" version = "8.22.2" description = "IPython: Productive Interactive Computing" -category = "dev" optional = false python-versions = ">=3.10" files = [ @@ -359,11 +898,45 @@ qtconsole = ["qtconsole"] test = ["pickleshare", "pytest (<8)", "pytest-asyncio (<0.22)", "testpath"] test-extra = ["curio", "ipython[test]", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.23)", "pandas", "trio"] +[[package]] +name = "ipywidgets" +version = "8.1.3" +description = "Jupyter interactive widgets" +optional = false +python-versions = ">=3.7" +files = [ + {file = "ipywidgets-8.1.3-py3-none-any.whl", hash = "sha256:efafd18f7a142248f7cb0ba890a68b96abd4d6e88ddbda483c9130d12667eaf2"}, + {file = "ipywidgets-8.1.3.tar.gz", hash = "sha256:f5f9eeaae082b1823ce9eac2575272952f40d748893972956dc09700a6392d9c"}, +] + +[package.dependencies] +comm = ">=0.1.3" +ipython = ">=6.1.0" +jupyterlab-widgets = ">=3.0.11,<3.1.0" +traitlets = ">=4.3.1" +widgetsnbextension = ">=4.0.11,<4.1.0" + +[package.extras] +test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] + +[[package]] +name = "isoduration" +version = "20.11.0" +description = "Operations with ISO 8601 durations" +optional = false +python-versions = ">=3.7" +files = [ + {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"}, + {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"}, +] + +[package.dependencies] +arrow = ">=0.15.0" + [[package]] name = "jedi" version = "0.19.1" description = "An autocompletion tool for Python that can be used for text editors." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -379,11 +952,352 @@ docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alab qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] +[[package]] +name = "jinja2" +version = "3.1.4" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "json5" +version = "0.9.25" +description = "A Python implementation of the JSON5 data format." +optional = false +python-versions = ">=3.8" +files = [ + {file = "json5-0.9.25-py3-none-any.whl", hash = "sha256:34ed7d834b1341a86987ed52f3f76cd8ee184394906b6e22a1e0deb9ab294e8f"}, + {file = "json5-0.9.25.tar.gz", hash = "sha256:548e41b9be043f9426776f05df8635a00fe06104ea51ed24b67f908856e151ae"}, +] + +[[package]] +name = "jsonpointer" +version = "2.4" +description = "Identify specific nodes in a JSON document (RFC 6901)" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" +files = [ + {file = "jsonpointer-2.4-py2.py3-none-any.whl", hash = "sha256:15d51bba20eea3165644553647711d150376234112651b4f1811022aecad7d7a"}, + {file = "jsonpointer-2.4.tar.gz", hash = "sha256:585cee82b70211fa9e6043b7bb89db6e1aa49524340dde8ad6b63206ea689d88"}, +] + +[[package]] +name = "jsonschema" +version = "4.22.0" +description = "An implementation of JSON Schema validation for Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsonschema-4.22.0-py3-none-any.whl", hash = "sha256:ff4cfd6b1367a40e7bc6411caec72effadd3db0bbe5017de188f2d6108335802"}, + {file = "jsonschema-4.22.0.tar.gz", hash = "sha256:5b22d434a45935119af990552c862e5d6d564e8f6601206b305a61fdf661a2b7"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} +jsonschema-specifications = ">=2023.03.6" +referencing = ">=0.28.4" +rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} +rpds-py = ">=0.7.1" +uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} +webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format-nongpl\""} + +[package.extras] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] + +[[package]] +name = "jsonschema-specifications" +version = "2023.12.1" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, + {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, +] + +[package.dependencies] +referencing = ">=0.31.0" + +[[package]] +name = "jupyter" +version = "1.0.0" +description = "Jupyter metapackage. Install all the Jupyter components in one go." +optional = false +python-versions = "*" +files = [ + {file = "jupyter-1.0.0-py2.py3-none-any.whl", hash = "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"}, + {file = "jupyter-1.0.0.tar.gz", hash = "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"}, + {file = "jupyter-1.0.0.zip", hash = "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"}, +] + +[package.dependencies] +ipykernel = "*" +ipywidgets = "*" +jupyter-console = "*" +nbconvert = "*" +notebook = "*" +qtconsole = "*" + +[[package]] +name = "jupyter-client" +version = "8.6.2" +description = "Jupyter protocol implementation and client libraries" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_client-8.6.2-py3-none-any.whl", hash = "sha256:50cbc5c66fd1b8f65ecb66bc490ab73217993632809b6e505687de18e9dea39f"}, + {file = "jupyter_client-8.6.2.tar.gz", hash = "sha256:2bda14d55ee5ba58552a8c53ae43d215ad9868853489213f37da060ced54d8df"}, +] + +[package.dependencies] +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +python-dateutil = ">=2.8.2" +pyzmq = ">=23.0" +tornado = ">=6.2" +traitlets = ">=5.3" + +[package.extras] +docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest (<8.2.0)", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] + +[[package]] +name = "jupyter-console" +version = "6.6.3" +description = "Jupyter terminal console" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jupyter_console-6.6.3-py3-none-any.whl", hash = "sha256:309d33409fcc92ffdad25f0bcdf9a4a9daa61b6f341177570fdac03de5352485"}, + {file = "jupyter_console-6.6.3.tar.gz", hash = "sha256:566a4bf31c87adbfadf22cdf846e3069b59a71ed5da71d6ba4d8aaad14a53539"}, +] + +[package.dependencies] +ipykernel = ">=6.14" +ipython = "*" +jupyter-client = ">=7.0.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +prompt-toolkit = ">=3.0.30" +pygments = "*" +pyzmq = ">=17" +traitlets = ">=5.4" + +[package.extras] +test = ["flaky", "pexpect", "pytest"] + +[[package]] +name = "jupyter-core" +version = "5.7.2" +description = "Jupyter core package. A base package on which Jupyter projects rely." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409"}, + {file = "jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9"}, +] + +[package.dependencies] +platformdirs = ">=2.5" +pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""} +traitlets = ">=5.3" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] +test = ["ipykernel", "pre-commit", "pytest (<8)", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "jupyter-events" +version = "0.10.0" +description = "Jupyter Event System library" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_events-0.10.0-py3-none-any.whl", hash = "sha256:4b72130875e59d57716d327ea70d3ebc3af1944d3717e5a498b8a06c6c159960"}, + {file = "jupyter_events-0.10.0.tar.gz", hash = "sha256:670b8229d3cc882ec782144ed22e0d29e1c2d639263f92ca8383e66682845e22"}, +] + +[package.dependencies] +jsonschema = {version = ">=4.18.0", extras = ["format-nongpl"]} +python-json-logger = ">=2.0.4" +pyyaml = ">=5.3" +referencing = "*" +rfc3339-validator = "*" +rfc3986-validator = ">=0.1.1" +traitlets = ">=5.3" + +[package.extras] +cli = ["click", "rich"] +docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"] +test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "rich"] + +[[package]] +name = "jupyter-lsp" +version = "2.2.5" +description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001"}, + {file = "jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da"}, +] + +[package.dependencies] +jupyter-server = ">=1.1.2" + +[[package]] +name = "jupyter-server" +version = "2.14.1" +description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_server-2.14.1-py3-none-any.whl", hash = "sha256:16f7177c3a4ea8fe37784e2d31271981a812f0b2874af17339031dc3510cc2a5"}, + {file = "jupyter_server-2.14.1.tar.gz", hash = "sha256:12558d158ec7a0653bf96cc272bc7ad79e0127d503b982ed144399346694f726"}, +] + +[package.dependencies] +anyio = ">=3.1.0" +argon2-cffi = ">=21.1" +jinja2 = ">=3.0.3" +jupyter-client = ">=7.4.4" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +jupyter-events = ">=0.9.0" +jupyter-server-terminals = ">=0.4.4" +nbconvert = ">=6.4.4" +nbformat = ">=5.3.0" +overrides = ">=5.0" +packaging = ">=22.0" +prometheus-client = ">=0.9" +pywinpty = {version = ">=2.0.1", markers = "os_name == \"nt\""} +pyzmq = ">=24" +send2trash = ">=1.8.2" +terminado = ">=0.8.3" +tornado = ">=6.2.0" +traitlets = ">=5.6.0" +websocket-client = ">=1.7" + +[package.extras] +docs = ["ipykernel", "jinja2", "jupyter-client", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-openapi (>=0.8.0)", "sphinxcontrib-spelling", "sphinxemoji", "tornado", "typing-extensions"] +test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0,<9)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.7)", "pytest-timeout", "requests"] + +[[package]] +name = "jupyter-server-terminals" +version = "0.5.3" +description = "A Jupyter Server Extension Providing Terminals." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa"}, + {file = "jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269"}, +] + +[package.dependencies] +pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""} +terminado = ">=0.8.3" + +[package.extras] +docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] +test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] + +[[package]] +name = "jupyterlab" +version = "4.2.1" +description = "JupyterLab computational environment" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyterlab-4.2.1-py3-none-any.whl", hash = "sha256:6ac6e3827b3c890e6e549800e8a4f4aaea6a69321e2240007902aa7a0c56a8e4"}, + {file = "jupyterlab-4.2.1.tar.gz", hash = "sha256:a10fb71085a6900820c62d43324005046402ffc8f0fde696103e37238a839507"}, +] + +[package.dependencies] +async-lru = ">=1.0.0" +httpx = ">=0.25.0" +ipykernel = ">=6.5.0" +jinja2 = ">=3.0.3" +jupyter-core = "*" +jupyter-lsp = ">=2.0.0" +jupyter-server = ">=2.4.0,<3" +jupyterlab-server = ">=2.27.1,<3" +notebook-shim = ">=0.2" +packaging = "*" +tomli = {version = ">=1.2.2", markers = "python_version < \"3.11\""} +tornado = ">=6.2.0" +traitlets = "*" + +[package.extras] +dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.3.5)"] +docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"] +docs-screenshots = ["altair (==5.3.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.2)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.1.post2)", "matplotlib (==3.8.3)", "nbconvert (>=7.0.0)", "pandas (==2.2.1)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"] +test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] +upgrade-extension = ["copier (>=8,<10)", "jinja2-time (<0.3)", "pydantic (<2.0)", "pyyaml-include (<2.0)", "tomli-w (<2.0)"] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +description = "Pygments theme using JupyterLab CSS variables" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, + {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, +] + +[[package]] +name = "jupyterlab-server" +version = "2.27.2" +description = "A set of server components for JupyterLab and JupyterLab like applications." +optional = false +python-versions = ">=3.8" +files = [ + {file = "jupyterlab_server-2.27.2-py3-none-any.whl", hash = "sha256:54aa2d64fd86383b5438d9f0c032f043c4d8c0264b8af9f60bd061157466ea43"}, + {file = "jupyterlab_server-2.27.2.tar.gz", hash = "sha256:15cbb349dc45e954e09bacf81b9f9bcb10815ff660fb2034ecd7417db3a7ea27"}, +] + +[package.dependencies] +babel = ">=2.10" +jinja2 = ">=3.0.3" +json5 = ">=0.9.0" +jsonschema = ">=4.18.0" +jupyter-server = ">=1.21,<3" +packaging = ">=21.3" +requests = ">=2.31" + +[package.extras] +docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"] +openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"] +test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0,<8)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] + +[[package]] +name = "jupyterlab-widgets" +version = "3.0.11" +description = "Jupyter interactive widgets for JupyterLab" +optional = false +python-versions = ">=3.7" +files = [ + {file = "jupyterlab_widgets-3.0.11-py3-none-any.whl", hash = "sha256:78287fd86d20744ace330a61625024cf5521e1c012a352ddc0a3cdc2348becd0"}, + {file = "jupyterlab_widgets-3.0.11.tar.gz", hash = "sha256:dd5ac679593c969af29c9bed054c24f26842baa51352114736756bc035deee27"}, +] + [[package]] name = "kiwisolver" version = "1.4.5" description = "A fast implementation of the Cassowary constraint solver" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -493,11 +1407,79 @@ files = [ {file = "kiwisolver-1.4.5.tar.gz", hash = "sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec"}, ] +[[package]] +name = "markupsafe" +version = "2.1.5" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, +] + [[package]] name = "matplotlib" version = "3.8.3" description = "Python plotting package" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -546,7 +1528,6 @@ python-dateutil = ">=2.7" name = "matplotlib-inline" version = "0.1.6" description = "Inline Matplotlib backend for Jupyter" -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -557,11 +1538,21 @@ files = [ [package.dependencies] traitlets = "*" +[[package]] +name = "mistune" +version = "3.0.2" +description = "A sane and fast Markdown parser with useful plugins and renderers" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, + {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, +] + [[package]] name = "mypy" version = "1.9.0" description = "Optional static typing for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -595,33 +1586,162 @@ files = [ ] [package.dependencies] -mypy-extensions = ">=1.0.0" -tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} -typing-extensions = ">=4.1.0" +mypy-extensions = ">=1.0.0" +tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = ">=4.1.0" + +[package.extras] +dmypy = ["psutil (>=4.0)"] +install-types = ["pip"] +mypyc = ["setuptools (>=50)"] +reports = ["lxml"] + +[[package]] +name = "mypy-extensions" +version = "1.0.0" +description = "Type system extensions for programs checked with the mypy type checker." +optional = false +python-versions = ">=3.5" +files = [ + {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, + {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, +] + +[[package]] +name = "nbclient" +version = "0.10.0" +description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." +optional = false +python-versions = ">=3.8.0" +files = [ + {file = "nbclient-0.10.0-py3-none-any.whl", hash = "sha256:f13e3529332a1f1f81d82a53210322476a168bb7090a0289c795fe9cc11c9d3f"}, + {file = "nbclient-0.10.0.tar.gz", hash = "sha256:4b3f1b7dba531e498449c4db4f53da339c91d449dc11e9af3a43b4eb5c5abb09"}, +] + +[package.dependencies] +jupyter-client = ">=6.1.12" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +nbformat = ">=5.1" +traitlets = ">=5.4" + +[package.extras] +dev = ["pre-commit"] +docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphinx (>=1.7)", "sphinx-book-theme", "sphinxcontrib-spelling"] +test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0,<8)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"] + +[[package]] +name = "nbconvert" +version = "7.16.4" +description = "Converting Jupyter Notebooks (.ipynb files) to other formats. Output formats include asciidoc, html, latex, markdown, pdf, py, rst, script. nbconvert can be used both as a Python library (`import nbconvert`) or as a command line tool (invoked as `jupyter nbconvert ...`)." +optional = false +python-versions = ">=3.8" +files = [ + {file = "nbconvert-7.16.4-py3-none-any.whl", hash = "sha256:05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3"}, + {file = "nbconvert-7.16.4.tar.gz", hash = "sha256:86ca91ba266b0a448dc96fa6c5b9d98affabde2867b363258703536807f9f7f4"}, +] + +[package.dependencies] +beautifulsoup4 = "*" +bleach = "!=5.0.0" +defusedxml = "*" +jinja2 = ">=3.0" +jupyter-core = ">=4.7" +jupyterlab-pygments = "*" +markupsafe = ">=2.0" +mistune = ">=2.0.3,<4" +nbclient = ">=0.5.0" +nbformat = ">=5.7" +packaging = "*" +pandocfilters = ">=1.4.1" +pygments = ">=2.4.1" +tinycss2 = "*" +traitlets = ">=5.1" + +[package.extras] +all = ["flaky", "ipykernel", "ipython", "ipywidgets (>=7.5)", "myst-parser", "nbsphinx (>=0.2.12)", "playwright", "pydata-sphinx-theme", "pyqtwebengine (>=5.15)", "pytest (>=7)", "sphinx (==5.0.2)", "sphinxcontrib-spelling", "tornado (>=6.1)"] +docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)", "sphinxcontrib-spelling"] +qtpdf = ["pyqtwebengine (>=5.15)"] +qtpng = ["pyqtwebengine (>=5.15)"] +serve = ["tornado (>=6.1)"] +test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest (>=7)"] +webpdf = ["playwright"] + +[[package]] +name = "nbformat" +version = "5.10.4" +description = "The Jupyter Notebook format" +optional = false +python-versions = ">=3.8" +files = [ + {file = "nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b"}, + {file = "nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a"}, +] + +[package.dependencies] +fastjsonschema = ">=2.15" +jsonschema = ">=2.6" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +traitlets = ">=5.1" [package.extras] -dmypy = ["psutil (>=4.0)"] -install-types = ["pip"] -mypyc = ["setuptools (>=50)"] -reports = ["lxml"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["pep440", "pre-commit", "pytest", "testpath"] [[package]] -name = "mypy-extensions" -version = "1.0.0" -description = "Type system extensions for programs checked with the mypy type checker." -category = "dev" +name = "nest-asyncio" +version = "1.6.0" +description = "Patch asyncio to allow nested event loops" optional = false python-versions = ">=3.5" files = [ - {file = "mypy_extensions-1.0.0-py3-none-any.whl", hash = "sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d"}, - {file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"}, + {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, + {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, +] + +[[package]] +name = "notebook" +version = "7.2.0" +description = "Jupyter Notebook - A web-based notebook environment for interactive computing" +optional = false +python-versions = ">=3.8" +files = [ + {file = "notebook-7.2.0-py3-none-any.whl", hash = "sha256:b4752d7407d6c8872fc505df0f00d3cae46e8efb033b822adacbaa3f1f3ce8f5"}, + {file = "notebook-7.2.0.tar.gz", hash = "sha256:34a2ba4b08ad5d19ec930db7484fb79746a1784be9e1a5f8218f9af8656a141f"}, +] + +[package.dependencies] +jupyter-server = ">=2.4.0,<3" +jupyterlab = ">=4.2.0,<4.3" +jupyterlab-server = ">=2.27.1,<3" +notebook-shim = ">=0.2,<0.3" +tornado = ">=6.2.0" + +[package.extras] +dev = ["hatch", "pre-commit"] +docs = ["myst-parser", "nbsphinx", "pydata-sphinx-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4.0,<3)", "jupyterlab-server[test] (>=2.27.1,<3)", "nbval", "pytest (>=7.0)", "pytest-console-scripts", "pytest-timeout", "pytest-tornasync", "requests"] + +[[package]] +name = "notebook-shim" +version = "0.2.4" +description = "A shim layer for notebook traits and config" +optional = false +python-versions = ">=3.7" +files = [ + {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, + {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, ] +[package.dependencies] +jupyter-server = ">=1.8,<3" + +[package.extras] +test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync"] + [[package]] name = "numpy" version = "1.26.4" description = "Fundamental package for array computing in Python" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -663,11 +1783,21 @@ files = [ {file = "numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010"}, ] +[[package]] +name = "overrides" +version = "7.7.0" +description = "A decorator to automatically detect mismatch when overriding a method." +optional = false +python-versions = ">=3.6" +files = [ + {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, + {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, +] + [[package]] name = "packaging" version = "24.0" description = "Core utilities for Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -679,7 +1809,6 @@ files = [ name = "pandas" version = "2.2.1" description = "Powerful data structures for data analysis, time series, and statistics" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -749,11 +1878,21 @@ sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-d test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] xml = ["lxml (>=4.9.2)"] +[[package]] +name = "pandocfilters" +version = "1.5.1" +description = "Utilities for writing pandoc filters in python" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, + {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, +] + [[package]] name = "parso" version = "0.8.3" description = "A Python Parser" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -769,7 +1908,6 @@ testing = ["docopt", "pytest (<6.0.0)"] name = "pathspec" version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -781,7 +1919,6 @@ files = [ name = "pexpect" version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." -category = "dev" optional = false python-versions = "*" files = [ @@ -796,7 +1933,6 @@ ptyprocess = ">=0.5" name = "pillow" version = "10.2.0" description = "Python Imaging Library (Fork)" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -882,7 +2018,6 @@ xmp = ["defusedxml"] name = "platformdirs" version = "4.2.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -898,7 +2033,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest- name = "pluggy" version = "1.4.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -910,11 +2044,24 @@ files = [ dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] +[[package]] +name = "prometheus-client" +version = "0.20.0" +description = "Python client for the Prometheus monitoring system." +optional = false +python-versions = ">=3.8" +files = [ + {file = "prometheus_client-0.20.0-py3-none-any.whl", hash = "sha256:cde524a85bce83ca359cc837f28b8c0db5cac7aa653a588fd7e84ba061c329e7"}, + {file = "prometheus_client-0.20.0.tar.gz", hash = "sha256:287629d00b147a32dcb2be0b9df905da599b2d82f80377083ec8463309a4bb89"}, +] + +[package.extras] +twisted = ["twisted"] + [[package]] name = "prompt-toolkit" version = "3.0.43" description = "Library for building powerful interactive command lines in Python" -category = "dev" optional = false python-versions = ">=3.7.0" files = [ @@ -925,11 +2072,38 @@ files = [ [package.dependencies] wcwidth = "*" +[[package]] +name = "psutil" +version = "5.9.8" +description = "Cross-platform lib for process and system monitoring in Python." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +files = [ + {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"}, + {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"}, + {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"}, + {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"}, + {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"}, + {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"}, + {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"}, + {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"}, + {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"}, + {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"}, +] + +[package.extras] +test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] + [[package]] name = "ptyprocess" version = "0.7.0" description = "Run a subprocess in a pseudo terminal" -category = "dev" optional = false python-versions = "*" files = [ @@ -941,7 +2115,6 @@ files = [ name = "pure-eval" version = "0.2.2" description = "Safely evaluate AST nodes without side effects" -category = "dev" optional = false python-versions = "*" files = [ @@ -956,7 +2129,6 @@ tests = ["pytest"] name = "py-cpuinfo" version = "9.0.0" description = "Get CPU info with pure Python" -category = "dev" optional = false python-versions = "*" files = [ @@ -964,11 +2136,21 @@ files = [ {file = "py_cpuinfo-9.0.0-py3-none-any.whl", hash = "sha256:859625bc251f64e21f077d099d4162689c762b5d6a4c3c97553d56241c9674d5"}, ] +[[package]] +name = "pycparser" +version = "2.22" +description = "C parser in Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, +] + [[package]] name = "pydantic" version = "2.6.4" description = "Data validation using Python type hints" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -988,7 +2170,6 @@ email = ["email-validator (>=2.0.0)"] name = "pydantic-core" version = "2.16.3" description = "" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1080,7 +2261,6 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" name = "pygments" version = "2.17.2" description = "Pygments is a syntax highlighting package written in Python." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1096,7 +2276,6 @@ windows-terminal = ["colorama (>=0.4.6)"] name = "pyparsing" version = "3.1.2" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" optional = false python-versions = ">=3.6.8" files = [ @@ -1111,7 +2290,6 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pytest" version = "8.1.1" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1134,7 +2312,6 @@ testing = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygm name = "pytest-benchmark" version = "4.0.0" description = "A ``pytest`` fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1155,7 +2332,6 @@ histogram = ["pygal", "pygaljs"] name = "python-dateutil" version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -1166,11 +2342,21 @@ files = [ [package.dependencies] six = ">=1.5" +[[package]] +name = "python-json-logger" +version = "2.0.7" +description = "A python library adding a json log formatter" +optional = false +python-versions = ">=3.6" +files = [ + {file = "python-json-logger-2.0.7.tar.gz", hash = "sha256:23e7ec02d34237c5aa1e29a070193a4ea87583bb4e7f8fd06d3de8264c4b2e1c"}, + {file = "python_json_logger-2.0.7-py3-none-any.whl", hash = "sha256:f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd"}, +] + [[package]] name = "pytz" version = "2024.1" description = "World timezone definitions, modern and historical" -category = "main" optional = false python-versions = "*" files = [ @@ -1178,11 +2364,419 @@ files = [ {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, ] +[[package]] +name = "pywin32" +version = "306" +description = "Python for Window Extensions" +optional = false +python-versions = "*" +files = [ + {file = "pywin32-306-cp310-cp310-win32.whl", hash = "sha256:06d3420a5155ba65f0b72f2699b5bacf3109f36acbe8923765c22938a69dfc8d"}, + {file = "pywin32-306-cp310-cp310-win_amd64.whl", hash = "sha256:84f4471dbca1887ea3803d8848a1616429ac94a4a8d05f4bc9c5dcfd42ca99c8"}, + {file = "pywin32-306-cp311-cp311-win32.whl", hash = "sha256:e65028133d15b64d2ed8f06dd9fbc268352478d4f9289e69c190ecd6818b6407"}, + {file = "pywin32-306-cp311-cp311-win_amd64.whl", hash = "sha256:a7639f51c184c0272e93f244eb24dafca9b1855707d94c192d4a0b4c01e1100e"}, + {file = "pywin32-306-cp311-cp311-win_arm64.whl", hash = "sha256:70dba0c913d19f942a2db25217d9a1b726c278f483a919f1abfed79c9cf64d3a"}, + {file = "pywin32-306-cp312-cp312-win32.whl", hash = "sha256:383229d515657f4e3ed1343da8be101000562bf514591ff383ae940cad65458b"}, + {file = "pywin32-306-cp312-cp312-win_amd64.whl", hash = "sha256:37257794c1ad39ee9be652da0462dc2e394c8159dfd913a8a4e8eb6fd346da0e"}, + {file = "pywin32-306-cp312-cp312-win_arm64.whl", hash = "sha256:5821ec52f6d321aa59e2db7e0a35b997de60c201943557d108af9d4ae1ec7040"}, + {file = "pywin32-306-cp37-cp37m-win32.whl", hash = "sha256:1c73ea9a0d2283d889001998059f5eaaba3b6238f767c9cf2833b13e6a685f65"}, + {file = "pywin32-306-cp37-cp37m-win_amd64.whl", hash = "sha256:72c5f621542d7bdd4fdb716227be0dd3f8565c11b280be6315b06ace35487d36"}, + {file = "pywin32-306-cp38-cp38-win32.whl", hash = "sha256:e4c092e2589b5cf0d365849e73e02c391c1349958c5ac3e9d5ccb9a28e017b3a"}, + {file = "pywin32-306-cp38-cp38-win_amd64.whl", hash = "sha256:e8ac1ae3601bee6ca9f7cb4b5363bf1c0badb935ef243c4733ff9a393b1690c0"}, + {file = "pywin32-306-cp39-cp39-win32.whl", hash = "sha256:e25fd5b485b55ac9c057f67d94bc203f3f6595078d1fb3b458c9c28b7153a802"}, + {file = "pywin32-306-cp39-cp39-win_amd64.whl", hash = "sha256:39b61c15272833b5c329a2989999dcae836b1eed650252ab1b7bfbe1d59f30f4"}, +] + +[[package]] +name = "pywinpty" +version = "2.0.13" +description = "Pseudo terminal support for Windows from Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pywinpty-2.0.13-cp310-none-win_amd64.whl", hash = "sha256:697bff211fb5a6508fee2dc6ff174ce03f34a9a233df9d8b5fe9c8ce4d5eaf56"}, + {file = "pywinpty-2.0.13-cp311-none-win_amd64.whl", hash = "sha256:b96fb14698db1284db84ca38c79f15b4cfdc3172065b5137383910567591fa99"}, + {file = "pywinpty-2.0.13-cp312-none-win_amd64.whl", hash = "sha256:2fd876b82ca750bb1333236ce98488c1be96b08f4f7647cfdf4129dfad83c2d4"}, + {file = "pywinpty-2.0.13-cp38-none-win_amd64.whl", hash = "sha256:61d420c2116c0212808d31625611b51caf621fe67f8a6377e2e8b617ea1c1f7d"}, + {file = "pywinpty-2.0.13-cp39-none-win_amd64.whl", hash = "sha256:71cb613a9ee24174730ac7ae439fd179ca34ccb8c5349e8d7b72ab5dea2c6f4b"}, + {file = "pywinpty-2.0.13.tar.gz", hash = "sha256:c34e32351a3313ddd0d7da23d27f835c860d32fe4ac814d372a3ea9594f41dde"}, +] + +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "pyzmq" +version = "26.0.3" +description = "Python bindings for 0MQ" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:44dd6fc3034f1eaa72ece33588867df9e006a7303725a12d64c3dff92330f625"}, + {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:acb704195a71ac5ea5ecf2811c9ee19ecdc62b91878528302dd0be1b9451cc90"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dbb9c997932473a27afa93954bb77a9f9b786b4ccf718d903f35da3232317de"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bcb34f869d431799c3ee7d516554797f7760cb2198ecaa89c3f176f72d062be"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ece17ec5f20d7d9b442e5174ae9f020365d01ba7c112205a4d59cf19dc38ee"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ba6e5e6588e49139a0979d03a7deb9c734bde647b9a8808f26acf9c547cab1bf"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3bf8b000a4e2967e6dfdd8656cd0757d18c7e5ce3d16339e550bd462f4857e59"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2136f64fbb86451dbbf70223635a468272dd20075f988a102bf8a3f194a411dc"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e8918973fbd34e7814f59143c5f600ecd38b8038161239fd1a3d33d5817a38b8"}, + {file = "pyzmq-26.0.3-cp310-cp310-win32.whl", hash = "sha256:0aaf982e68a7ac284377d051c742610220fd06d330dcd4c4dbb4cdd77c22a537"}, + {file = "pyzmq-26.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:f1a9b7d00fdf60b4039f4455afd031fe85ee8305b019334b72dcf73c567edc47"}, + {file = "pyzmq-26.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:80b12f25d805a919d53efc0a5ad7c0c0326f13b4eae981a5d7b7cc343318ebb7"}, + {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:a72a84570f84c374b4c287183debc776dc319d3e8ce6b6a0041ce2e400de3f32"}, + {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ca684ee649b55fd8f378127ac8462fb6c85f251c2fb027eb3c887e8ee347bcd"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e222562dc0f38571c8b1ffdae9d7adb866363134299264a1958d077800b193b7"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f17cde1db0754c35a91ac00b22b25c11da6eec5746431d6e5092f0cd31a3fea9"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7c0c0b3244bb2275abe255d4a30c050d541c6cb18b870975553f1fb6f37527"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ac97a21de3712afe6a6c071abfad40a6224fd14fa6ff0ff8d0c6e6cd4e2f807a"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:88b88282e55fa39dd556d7fc04160bcf39dea015f78e0cecec8ff4f06c1fc2b5"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:72b67f966b57dbd18dcc7efbc1c7fc9f5f983e572db1877081f075004614fcdd"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4b6cecbbf3b7380f3b61de3a7b93cb721125dc125c854c14ddc91225ba52f83"}, + {file = "pyzmq-26.0.3-cp311-cp311-win32.whl", hash = "sha256:eed56b6a39216d31ff8cd2f1d048b5bf1700e4b32a01b14379c3b6dde9ce3aa3"}, + {file = "pyzmq-26.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:3191d312c73e3cfd0f0afdf51df8405aafeb0bad71e7ed8f68b24b63c4f36500"}, + {file = "pyzmq-26.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:b6907da3017ef55139cf0e417c5123a84c7332520e73a6902ff1f79046cd3b94"}, + {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:068ca17214038ae986d68f4a7021f97e187ed278ab6dccb79f837d765a54d753"}, + {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7821d44fe07335bea256b9f1f41474a642ca55fa671dfd9f00af8d68a920c2d4"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eeb438a26d87c123bb318e5f2b3d86a36060b01f22fbdffd8cf247d52f7c9a2b"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:69ea9d6d9baa25a4dc9cef5e2b77b8537827b122214f210dd925132e34ae9b12"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7daa3e1369355766dea11f1d8ef829905c3b9da886ea3152788dc25ee6079e02"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6ca7a9a06b52d0e38ccf6bca1aeff7be178917893f3883f37b75589d42c4ac20"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1b7d0e124948daa4d9686d421ef5087c0516bc6179fdcf8828b8444f8e461a77"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e746524418b70f38550f2190eeee834db8850088c834d4c8406fbb9bc1ae10b2"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:6b3146f9ae6af82c47a5282ac8803523d381b3b21caeae0327ed2f7ecb718798"}, + {file = "pyzmq-26.0.3-cp312-cp312-win32.whl", hash = "sha256:2b291d1230845871c00c8462c50565a9cd6026fe1228e77ca934470bb7d70ea0"}, + {file = "pyzmq-26.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:926838a535c2c1ea21c903f909a9a54e675c2126728c21381a94ddf37c3cbddf"}, + {file = "pyzmq-26.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:5bf6c237f8c681dfb91b17f8435b2735951f0d1fad10cc5dfd96db110243370b"}, + {file = "pyzmq-26.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c0991f5a96a8e620f7691e61178cd8f457b49e17b7d9cfa2067e2a0a89fc1d5"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dbf012d8fcb9f2cf0643b65df3b355fdd74fc0035d70bb5c845e9e30a3a4654b"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:01fbfbeb8249a68d257f601deb50c70c929dc2dfe683b754659569e502fbd3aa"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c8eb19abe87029c18f226d42b8a2c9efdd139d08f8bf6e085dd9075446db450"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5344b896e79800af86ad643408ca9aa303a017f6ebff8cee5a3163c1e9aec987"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:204e0f176fd1d067671157d049466869b3ae1fc51e354708b0dc41cf94e23a3a"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a42db008d58530efa3b881eeee4991146de0b790e095f7ae43ba5cc612decbc5"}, + {file = "pyzmq-26.0.3-cp37-cp37m-win32.whl", hash = "sha256:8d7a498671ca87e32b54cb47c82a92b40130a26c5197d392720a1bce1b3c77cf"}, + {file = "pyzmq-26.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:3b4032a96410bdc760061b14ed6a33613ffb7f702181ba999df5d16fb96ba16a"}, + {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2cc4e280098c1b192c42a849de8de2c8e0f3a84086a76ec5b07bfee29bda7d18"}, + {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5bde86a2ed3ce587fa2b207424ce15b9a83a9fa14422dcc1c5356a13aed3df9d"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:34106f68e20e6ff253c9f596ea50397dbd8699828d55e8fa18bd4323d8d966e6"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ebbbd0e728af5db9b04e56389e2299a57ea8b9dd15c9759153ee2455b32be6ad"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6b1d1c631e5940cac5a0b22c5379c86e8df6a4ec277c7a856b714021ab6cfad"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e891ce81edd463b3b4c3b885c5603c00141151dd9c6936d98a680c8c72fe5c67"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9b273ecfbc590a1b98f014ae41e5cf723932f3b53ba9367cfb676f838038b32c"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b32bff85fb02a75ea0b68f21e2412255b5731f3f389ed9aecc13a6752f58ac97"}, + {file = "pyzmq-26.0.3-cp38-cp38-win32.whl", hash = "sha256:f6c21c00478a7bea93caaaef9e7629145d4153b15a8653e8bb4609d4bc70dbfc"}, + {file = "pyzmq-26.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:3401613148d93ef0fd9aabdbddb212de3db7a4475367f49f590c837355343972"}, + {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:2ed8357f4c6e0daa4f3baf31832df8a33334e0fe5b020a61bc8b345a3db7a606"}, + {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1c8f2a2ca45292084c75bb6d3a25545cff0ed931ed228d3a1810ae3758f975f"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b63731993cdddcc8e087c64e9cf003f909262b359110070183d7f3025d1c56b5"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3cd31f859b662ac5d7f4226ec7d8bd60384fa037fc02aee6ff0b53ba29a3ba8"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:115f8359402fa527cf47708d6f8a0f8234f0e9ca0cab7c18c9c189c194dbf620"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:715bdf952b9533ba13dfcf1f431a8f49e63cecc31d91d007bc1deb914f47d0e4"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e1258c639e00bf5e8a522fec6c3eaa3e30cf1c23a2f21a586be7e04d50c9acab"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:15c59e780be8f30a60816a9adab900c12a58d79c1ac742b4a8df044ab2a6d920"}, + {file = "pyzmq-26.0.3-cp39-cp39-win32.whl", hash = "sha256:d0cdde3c78d8ab5b46595054e5def32a755fc028685add5ddc7403e9f6de9879"}, + {file = "pyzmq-26.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:ce828058d482ef860746bf532822842e0ff484e27f540ef5c813d516dd8896d2"}, + {file = "pyzmq-26.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:788f15721c64109cf720791714dc14afd0f449d63f3a5487724f024345067381"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c18645ef6294d99b256806e34653e86236eb266278c8ec8112622b61db255de"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e6bc96ebe49604df3ec2c6389cc3876cabe475e6bfc84ced1bf4e630662cb35"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:971e8990c5cc4ddcff26e149398fc7b0f6a042306e82500f5e8db3b10ce69f84"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8416c23161abd94cc7da80c734ad7c9f5dbebdadfdaa77dad78244457448223"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:082a2988364b60bb5de809373098361cf1dbb239623e39e46cb18bc035ed9c0c"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d57dfbf9737763b3a60d26e6800e02e04284926329aee8fb01049635e957fe81"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77a85dca4c2430ac04dc2a2185c2deb3858a34fe7f403d0a946fa56970cf60a1"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c82a6d952a1d555bf4be42b6532927d2a5686dd3c3e280e5f63225ab47ac1f5"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4496b1282c70c442809fc1b151977c3d967bfb33e4e17cedbf226d97de18f709"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:e4946d6bdb7ba972dfda282f9127e5756d4f299028b1566d1245fa0d438847e6"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:03c0ae165e700364b266876d712acb1ac02693acd920afa67da2ebb91a0b3c09"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3e3070e680f79887d60feeda051a58d0ac36622e1759f305a41059eff62c6da7"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6ca08b840fe95d1c2bd9ab92dac5685f949fc6f9ae820ec16193e5ddf603c3b2"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e76654e9dbfb835b3518f9938e565c7806976c07b37c33526b574cc1a1050480"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:871587bdadd1075b112e697173e946a07d722459d20716ceb3d1bd6c64bd08ce"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d0a2d1bd63a4ad79483049b26514e70fa618ce6115220da9efdff63688808b17"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0270b49b6847f0d106d64b5086e9ad5dc8a902413b5dbbb15d12b60f9c1747a4"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:703c60b9910488d3d0954ca585c34f541e506a091a41930e663a098d3b794c67"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74423631b6be371edfbf7eabb02ab995c2563fee60a80a30829176842e71722a"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4adfbb5451196842a88fda3612e2c0414134874bffb1c2ce83ab4242ec9e027d"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3516119f4f9b8671083a70b6afaa0a070f5683e431ab3dc26e9215620d7ca1ad"}, + {file = "pyzmq-26.0.3.tar.gz", hash = "sha256:dba7d9f2e047dfa2bca3b01f4f84aa5246725203d6284e3790f2ca15fba6b40a"}, +] + +[package.dependencies] +cffi = {version = "*", markers = "implementation_name == \"pypy\""} + +[[package]] +name = "qtconsole" +version = "5.5.2" +description = "Jupyter Qt console" +optional = false +python-versions = ">=3.8" +files = [ + {file = "qtconsole-5.5.2-py3-none-any.whl", hash = "sha256:42d745f3d05d36240244a04e1e1ec2a86d5d9b6edb16dbdef582ccb629e87e0b"}, + {file = "qtconsole-5.5.2.tar.gz", hash = "sha256:6b5fb11274b297463706af84dcbbd5c92273b1f619e6d25d08874b0a88516989"}, +] + +[package.dependencies] +ipykernel = ">=4.1" +jupyter-client = ">=4.1" +jupyter-core = "*" +packaging = "*" +pygments = "*" +pyzmq = ">=17.1" +qtpy = ">=2.4.0" +traitlets = "<5.2.1 || >5.2.1,<5.2.2 || >5.2.2" + +[package.extras] +doc = ["Sphinx (>=1.3)"] +test = ["flaky", "pytest", "pytest-qt"] + +[[package]] +name = "qtpy" +version = "2.4.1" +description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)." +optional = false +python-versions = ">=3.7" +files = [ + {file = "QtPy-2.4.1-py3-none-any.whl", hash = "sha256:1c1d8c4fa2c884ae742b069151b0abe15b3f70491f3972698c683b8e38de839b"}, + {file = "QtPy-2.4.1.tar.gz", hash = "sha256:a5a15ffd519550a1361bdc56ffc07fda56a6af7292f17c7b395d4083af632987"}, +] + +[package.dependencies] +packaging = "*" + +[package.extras] +test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"] + +[[package]] +name = "referencing" +version = "0.35.1" +description = "JSON Referencing + Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "referencing-0.35.1-py3-none-any.whl", hash = "sha256:eda6d3234d62814d1c64e305c1331c9a3a6132da475ab6382eaa997b21ee75de"}, + {file = "referencing-0.35.1.tar.gz", hash = "sha256:25b42124a6c8b632a425174f24087783efb348a6f1e0008e63cd4466fedf703c"}, +] + +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + +[[package]] +name = "requests" +version = "2.32.3" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.8" +files = [ + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "rfc3339-validator" +version = "0.1.4" +description = "A pure python RFC3339 validator" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"}, + {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"}, +] + +[package.dependencies] +six = "*" + +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +description = "Pure python rfc3986 validator" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ + {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"}, + {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"}, +] + +[[package]] +name = "rpds-py" +version = "0.18.1" +description = "Python bindings to Rust's persistent data structures (rpds)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "rpds_py-0.18.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d31dea506d718693b6b2cffc0648a8929bdc51c70a311b2770f09611caa10d53"}, + {file = "rpds_py-0.18.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:732672fbc449bab754e0b15356c077cc31566df874964d4801ab14f71951ea80"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a98a1f0552b5f227a3d6422dbd61bc6f30db170939bd87ed14f3c339aa6c7c9"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f1944ce16401aad1e3f7d312247b3d5de7981f634dc9dfe90da72b87d37887d"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38e14fb4e370885c4ecd734f093a2225ee52dc384b86fa55fe3f74638b2cfb09"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08d74b184f9ab6289b87b19fe6a6d1a97fbfea84b8a3e745e87a5de3029bf944"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d70129cef4a8d979caa37e7fe957202e7eee8ea02c5e16455bc9808a59c6b2f0"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce0bb20e3a11bd04461324a6a798af34d503f8d6f1aa3d2aa8901ceaf039176d"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81c5196a790032e0fc2464c0b4ab95f8610f96f1f2fa3d4deacce6a79852da60"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f3027be483868c99b4985fda802a57a67fdf30c5d9a50338d9db646d590198da"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d44607f98caa2961bab4fa3c4309724b185b464cdc3ba6f3d7340bac3ec97cc1"}, + {file = "rpds_py-0.18.1-cp310-none-win32.whl", hash = "sha256:c273e795e7a0f1fddd46e1e3cb8be15634c29ae8ff31c196debb620e1edb9333"}, + {file = "rpds_py-0.18.1-cp310-none-win_amd64.whl", hash = "sha256:8352f48d511de5f973e4f2f9412736d7dea76c69faa6d36bcf885b50c758ab9a"}, + {file = "rpds_py-0.18.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6b5ff7e1d63a8281654b5e2896d7f08799378e594f09cf3674e832ecaf396ce8"}, + {file = "rpds_py-0.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8927638a4d4137a289e41d0fd631551e89fa346d6dbcfc31ad627557d03ceb6d"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:154bf5c93d79558b44e5b50cc354aa0459e518e83677791e6adb0b039b7aa6a7"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07f2139741e5deb2c5154a7b9629bc5aa48c766b643c1a6750d16f865a82c5fc"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c7672e9fba7425f79019db9945b16e308ed8bc89348c23d955c8c0540da0a07"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:489bdfe1abd0406eba6b3bb4fdc87c7fa40f1031de073d0cfb744634cc8fa261"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c20f05e8e3d4fc76875fc9cb8cf24b90a63f5a1b4c5b9273f0e8225e169b100"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:967342e045564cef76dfcf1edb700b1e20838d83b1aa02ab313e6a497cf923b8"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2cc7c1a47f3a63282ab0f422d90ddac4aa3034e39fc66a559ab93041e6505da7"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f7afbfee1157e0f9376c00bb232e80a60e59ed716e3211a80cb8506550671e6e"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e6934d70dc50f9f8ea47081ceafdec09245fd9f6032669c3b45705dea096b88"}, + {file = "rpds_py-0.18.1-cp311-none-win32.whl", hash = "sha256:c69882964516dc143083d3795cb508e806b09fc3800fd0d4cddc1df6c36e76bb"}, + {file = "rpds_py-0.18.1-cp311-none-win_amd64.whl", hash = "sha256:70a838f7754483bcdc830444952fd89645569e7452e3226de4a613a4c1793fb2"}, + {file = "rpds_py-0.18.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3dd3cd86e1db5aadd334e011eba4e29d37a104b403e8ca24dcd6703c68ca55b3"}, + {file = "rpds_py-0.18.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:05f3d615099bd9b13ecf2fc9cf2d839ad3f20239c678f461c753e93755d629ee"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35b2b771b13eee8729a5049c976197ff58a27a3829c018a04341bcf1ae409b2b"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ee17cd26b97d537af8f33635ef38be873073d516fd425e80559f4585a7b90c43"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b646bf655b135ccf4522ed43d6902af37d3f5dbcf0da66c769a2b3938b9d8184"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19ba472b9606c36716062c023afa2484d1e4220548751bda14f725a7de17b4f6"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e30ac5e329098903262dc5bdd7e2086e0256aa762cc8b744f9e7bf2a427d3f8"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d58ad6317d188c43750cb76e9deacf6051d0f884d87dc6518e0280438648a9ac"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e1735502458621921cee039c47318cb90b51d532c2766593be6207eec53e5c4c"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f5bab211605d91db0e2995a17b5c6ee5edec1270e46223e513eaa20da20076ac"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2fc24a329a717f9e2448f8cd1f960f9dac4e45b6224d60734edeb67499bab03a"}, + {file = "rpds_py-0.18.1-cp312-none-win32.whl", hash = "sha256:1805d5901779662d599d0e2e4159d8a82c0b05faa86ef9222bf974572286b2b6"}, + {file = "rpds_py-0.18.1-cp312-none-win_amd64.whl", hash = "sha256:720edcb916df872d80f80a1cc5ea9058300b97721efda8651efcd938a9c70a72"}, + {file = "rpds_py-0.18.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:c827576e2fa017a081346dce87d532a5310241648eb3700af9a571a6e9fc7e74"}, + {file = "rpds_py-0.18.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa3679e751408d75a0b4d8d26d6647b6d9326f5e35c00a7ccd82b78ef64f65f8"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0abeee75434e2ee2d142d650d1e54ac1f8b01e6e6abdde8ffd6eeac6e9c38e20"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed402d6153c5d519a0faf1bb69898e97fb31613b49da27a84a13935ea9164dfc"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:338dee44b0cef8b70fd2ef54b4e09bb1b97fc6c3a58fea5db6cc083fd9fc2724"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7750569d9526199c5b97e5a9f8d96a13300950d910cf04a861d96f4273d5b104"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:607345bd5912aacc0c5a63d45a1f73fef29e697884f7e861094e443187c02be5"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:207c82978115baa1fd8d706d720b4a4d2b0913df1c78c85ba73fe6c5804505f0"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6d1e42d2735d437e7e80bab4d78eb2e459af48c0a46e686ea35f690b93db792d"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5463c47c08630007dc0fe99fb480ea4f34a89712410592380425a9b4e1611d8e"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:06d218939e1bf2ca50e6b0ec700ffe755e5216a8230ab3e87c059ebb4ea06afc"}, + {file = "rpds_py-0.18.1-cp38-none-win32.whl", hash = "sha256:312fe69b4fe1ffbe76520a7676b1e5ac06ddf7826d764cc10265c3b53f96dbe9"}, + {file = "rpds_py-0.18.1-cp38-none-win_amd64.whl", hash = "sha256:9437ca26784120a279f3137ee080b0e717012c42921eb07861b412340f85bae2"}, + {file = "rpds_py-0.18.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:19e515b78c3fc1039dd7da0a33c28c3154458f947f4dc198d3c72db2b6b5dc93"}, + {file = "rpds_py-0.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7b28c5b066bca9a4eb4e2f2663012debe680f097979d880657f00e1c30875a0"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:673fdbbf668dd958eff750e500495ef3f611e2ecc209464f661bc82e9838991e"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d960de62227635d2e61068f42a6cb6aae91a7fe00fca0e3aeed17667c8a34611"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:352a88dc7892f1da66b6027af06a2e7e5d53fe05924cc2cfc56495b586a10b72"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e0ee01ad8260184db21468a6e1c37afa0529acc12c3a697ee498d3c2c4dcaf3"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4c39ad2f512b4041343ea3c7894339e4ca7839ac38ca83d68a832fc8b3748ab"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aaa71ee43a703c321906813bb252f69524f02aa05bf4eec85f0c41d5d62d0f4c"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6cd8098517c64a85e790657e7b1e509b9fe07487fd358e19431cb120f7d96338"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:4adec039b8e2928983f885c53b7cc4cda8965b62b6596501a0308d2703f8af1b"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:32b7daaa3e9389db3695964ce8e566e3413b0c43e3394c05e4b243a4cd7bef26"}, + {file = "rpds_py-0.18.1-cp39-none-win32.whl", hash = "sha256:2625f03b105328729f9450c8badda34d5243231eef6535f80064d57035738360"}, + {file = "rpds_py-0.18.1-cp39-none-win_amd64.whl", hash = "sha256:bf18932d0003c8c4d51a39f244231986ab23ee057d235a12b2684ea26a353590"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cbfbea39ba64f5e53ae2915de36f130588bba71245b418060ec3330ebf85678e"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a3d456ff2a6a4d2adcdf3c1c960a36f4fd2fec6e3b4902a42a384d17cf4e7a65"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7700936ef9d006b7ef605dc53aa364da2de5a3aa65516a1f3ce73bf82ecfc7ae"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51584acc5916212e1bf45edd17f3a6b05fe0cbb40482d25e619f824dccb679de"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:942695a206a58d2575033ff1e42b12b2aece98d6003c6bc739fbf33d1773b12f"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b906b5f58892813e5ba5c6056d6a5ad08f358ba49f046d910ad992196ea61397"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6f8e3fecca256fefc91bb6765a693d96692459d7d4c644660a9fff32e517843"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7732770412bab81c5a9f6d20aeb60ae943a9b36dcd990d876a773526468e7163"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:bd1105b50ede37461c1d51b9698c4f4be6e13e69a908ab7751e3807985fc0346"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:618916f5535784960f3ecf8111581f4ad31d347c3de66d02e728de460a46303c"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:17c6d2155e2423f7e79e3bb18151c686d40db42d8645e7977442170c360194d4"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c4c4c3f878df21faf5fac86eda32671c27889e13570645a9eea0a1abdd50922"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:fab6ce90574645a0d6c58890e9bcaac8d94dff54fb51c69e5522a7358b80ab64"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:531796fb842b53f2695e94dc338929e9f9dbf473b64710c28af5a160b2a8927d"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:740884bc62a5e2bbb31e584f5d23b32320fd75d79f916f15a788d527a5e83644"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:998125738de0158f088aef3cb264a34251908dd2e5d9966774fdab7402edfab7"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2be6e9dd4111d5b31ba3b74d17da54a8319d8168890fbaea4b9e5c3de630ae5"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0cee71bc618cd93716f3c1bf56653740d2d13ddbd47673efa8bf41435a60daa"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c3caec4ec5cd1d18e5dd6ae5194d24ed12785212a90b37f5f7f06b8bedd7139"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:27bba383e8c5231cd559affe169ca0b96ec78d39909ffd817f28b166d7ddd4d8"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:a888e8bdb45916234b99da2d859566f1e8a1d2275a801bb8e4a9644e3c7e7909"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6031b25fb1b06327b43d841f33842b383beba399884f8228a6bb3df3088485ff"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48c2faaa8adfacefcbfdb5f2e2e7bdad081e5ace8d182e5f4ade971f128e6bb3"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d85164315bd68c0806768dc6bb0429c6f95c354f87485ee3593c4f6b14def2bd"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6afd80f6c79893cfc0574956f78a0add8c76e3696f2d6a15bca2c66c415cf2d4"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa242ac1ff583e4ec7771141606aafc92b361cd90a05c30d93e343a0c2d82a89"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21be4770ff4e08698e1e8e0bce06edb6ea0626e7c8f560bc08222880aca6a6f"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c45a639e93a0c5d4b788b2613bd637468edd62f8f95ebc6fcc303d58ab3f0a8"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910e71711d1055b2768181efa0a17537b2622afeb0424116619817007f8a2b10"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b9bb1f182a97880f6078283b3505a707057c42bf55d8fca604f70dedfdc0772a"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d54f74f40b1f7aaa595a02ff42ef38ca654b1469bef7d52867da474243cc633"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:8d2e182c9ee01135e11e9676e9a62dfad791a7a467738f06726872374a83db49"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:636a15acc588f70fda1661234761f9ed9ad79ebed3f2125d44be0862708b666e"}, + {file = "rpds_py-0.18.1.tar.gz", hash = "sha256:dc48b479d540770c811fbd1eb9ba2bb66951863e448efec2e2c102625328e92f"}, +] + [[package]] name = "ruff" version = "0.3.3" description = "An extremely fast Python linter and code formatter, written in Rust." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1209,7 +2803,6 @@ files = [ name = "scipy" version = "1.12.0" description = "Fundamental algorithms for scientific computing in Python" -category = "main" optional = false python-versions = ">=3.9" files = [ @@ -1248,11 +2841,26 @@ dev = ["click", "cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyl doc = ["jupytext", "matplotlib (>2)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] test = ["asv", "gmpy2", "hypothesis", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +[[package]] +name = "send2trash" +version = "1.8.3" +description = "Send file to trash natively under Mac OS X, Windows and Linux" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" +files = [ + {file = "Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9"}, + {file = "Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf"}, +] + +[package.extras] +nativelib = ["pyobjc-framework-Cocoa", "pywin32"] +objc = ["pyobjc-framework-Cocoa"] +win32 = ["pywin32"] + [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1260,11 +2868,32 @@ files = [ {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] +[[package]] +name = "sniffio" +version = "1.3.1" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +files = [ + {file = "sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2"}, + {file = "sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc"}, +] + +[[package]] +name = "soupsieve" +version = "2.5" +description = "A modern CSS selector implementation for Beautiful Soup." +optional = false +python-versions = ">=3.8" +files = [ + {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, + {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, +] + [[package]] name = "stack-data" version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" -category = "dev" optional = false python-versions = "*" files = [ @@ -1280,11 +2909,49 @@ pure-eval = "*" [package.extras] tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] +[[package]] +name = "terminado" +version = "0.18.1" +description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0"}, + {file = "terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e"}, +] + +[package.dependencies] +ptyprocess = {version = "*", markers = "os_name != \"nt\""} +pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""} +tornado = ">=6.1.0" + +[package.extras] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] +test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] +typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] + +[[package]] +name = "tinycss2" +version = "1.3.0" +description = "A tiny CSS parser" +optional = false +python-versions = ">=3.8" +files = [ + {file = "tinycss2-1.3.0-py3-none-any.whl", hash = "sha256:54a8dbdffb334d536851be0226030e9505965bb2f30f21a4a82c55fb2a80fae7"}, + {file = "tinycss2-1.3.0.tar.gz", hash = "sha256:152f9acabd296a8375fbca5b84c961ff95971fcfc32e79550c8df8e29118c54d"}, +] + +[package.dependencies] +webencodings = ">=0.4" + +[package.extras] +doc = ["sphinx", "sphinx_rtd_theme"] +test = ["pytest", "ruff"] + [[package]] name = "tokenize-rt" version = "5.2.0" description = "A wrapper around the stdlib `tokenize` which roundtrips." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1296,7 +2963,6 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1304,11 +2970,30 @@ files = [ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, ] +[[package]] +name = "tornado" +version = "6.4" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +optional = false +python-versions = ">= 3.8" +files = [ + {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"}, + {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"}, + {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"}, + {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"}, + {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, +] + [[package]] name = "traitlets" version = "5.14.2" description = "Traitlets Python configuration system" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1320,11 +3005,21 @@ files = [ docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<8.1)", "pytest-mock", "pytest-mypy-testing"] +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20240316" +description = "Typing stubs for python-dateutil" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-python-dateutil-2.9.0.20240316.tar.gz", hash = "sha256:5d2f2e240b86905e40944dd787db6da9263f0deabef1076ddaed797351ec0202"}, + {file = "types_python_dateutil-2.9.0.20240316-py3-none-any.whl", hash = "sha256:6b8cb66d960771ce5ff974e9dd45e38facb81718cc1e208b10b1baccbfdbee3b"}, +] + [[package]] name = "typing-extensions" version = "4.10.0" description = "Backported and Experimental Type Hints for Python 3.8+" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1336,7 +3031,6 @@ files = [ name = "tzdata" version = "2024.1" description = "Provider of IANA time zone data" -category = "main" optional = false python-versions = ">=2" files = [ @@ -1344,11 +3038,41 @@ files = [ {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, ] +[[package]] +name = "uri-template" +version = "1.3.0" +description = "RFC 6570 URI Template Processor" +optional = false +python-versions = ">=3.7" +files = [ + {file = "uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7"}, + {file = "uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363"}, +] + +[package.extras] +dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-modern-annotations", "flake8-noqa", "flake8-pyproject", "flake8-requirements", "flake8-typechecking-import", "flake8-use-fstring", "mypy", "pep8-naming", "types-PyYAML"] + +[[package]] +name = "urllib3" +version = "2.2.1" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.1-py3-none-any.whl", hash = "sha256:450b20ec296a467077128bff42b73080516e71b56ff59a60a02bef2232c4fa9d"}, + {file = "urllib3-2.2.1.tar.gz", hash = "sha256:d0570876c61ab9e520d776c38acbbb5b05a776d3f9ff98a5c8fd5162a444cf19"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + [[package]] name = "wcwidth" version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" -category = "dev" optional = false python-versions = "*" files = [ @@ -1356,7 +3080,60 @@ files = [ {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] +[[package]] +name = "webcolors" +version = "1.13" +description = "A library for working with the color formats defined by HTML and CSS." +optional = false +python-versions = ">=3.7" +files = [ + {file = "webcolors-1.13-py3-none-any.whl", hash = "sha256:29bc7e8752c0a1bd4a1f03c14d6e6a72e93d82193738fa860cbff59d0fcc11bf"}, + {file = "webcolors-1.13.tar.gz", hash = "sha256:c225b674c83fa923be93d235330ce0300373d02885cef23238813b0d5668304a"}, +] + +[package.extras] +docs = ["furo", "sphinx", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-notfound-page", "sphinxext-opengraph"] +tests = ["pytest", "pytest-cov"] + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +optional = false +python-versions = "*" +files = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +description = "WebSocket client for Python with low level API options" +optional = false +python-versions = ">=3.8" +files = [ + {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, + {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, +] + +[package.extras] +docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] +optional = ["python-socks", "wsaccel"] +test = ["websockets"] + +[[package]] +name = "widgetsnbextension" +version = "4.0.11" +description = "Jupyter interactive widgets for Jupyter Notebook" +optional = false +python-versions = ">=3.7" +files = [ + {file = "widgetsnbextension-4.0.11-py3-none-any.whl", hash = "sha256:55d4d6949d100e0d08b94948a42efc3ed6dfdc0e9468b2c4b128c9a2ce3a7a36"}, + {file = "widgetsnbextension-4.0.11.tar.gz", hash = "sha256:8b22a8f1910bfd188e596fe7fc05dcbd87e810c8a4ba010bdb3da86637398474"}, +] + [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "655602e4ccbc2e358de8aea50a1bd0cec8738fc852a89a7d19a8573a322458b6" +content-hash = "b0558c2a6f99c8f20681732d5c324b57976b325d5350201e49be35783fc24554" diff --git a/pyproject.toml b/pyproject.toml index d3cfd1b..ab8caff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "optionlab" -version = "1.2.0" +version = "1.2.1" description = "Evaluate option strategies" authors = ["rgaveiga"] readme = "README.md" @@ -12,6 +12,7 @@ pandas = "^2.2.1" matplotlib = "^3.8.3" pydantic = "^2.6.3" holidays = "^0.44" +jupyter = "^1.0.0" [tool.poetry.group.dev.dependencies] mypy = "^1.8.0" diff --git a/tests/test_core.py b/tests/test_core.py index 35c72df..7fc5ea3 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -5,18 +5,18 @@ from optionlab.support import create_price_samples COVERED_CALL_RESULT = { - "probability_of_profit": 0.5489826392738772, + "probability_of_profit": 0.5472008423945269, "profit_ranges": [(164.9, float("inf"))], "per_leg_cost": [-16899.0, 409.99999999999994], "strategy_cost": -16489.0, "minimum_return_in_the_domain": -9590.000000000002, "maximum_return_in_the_domain": 2011.0, - "implied_volatility": [0.0, 0.466], - "in_the_money_probability": [1.0, 0.2529827985340476], - "delta": [1.0, -0.30180572515271814], - "gamma": [0.0, 0.01413835937607837], - "theta": [0.0, 0.19521264859629808], - "vega": [0.0, 0.1779899391089498], + "implied_volatility": [0.0, 0.456], + "in_the_money_probability": [1.0, 0.256866624586934], + "delta": [1.0, -0.30713817729665704], + "gamma": [0.0, 0.013948977387090415], + "theta": [0.0, 0.19283555235589467], + "vega": [0.0, 0.1832408146218486], } PROB_100_ITM_RESULT = { @@ -26,12 +26,12 @@ "strategy_cost": 240.0, "minimum_return_in_the_domain": 240.0, "maximum_return_in_the_domain": 740.0000000000018, - "implied_volatility": [0.505, 0.493], - "in_the_money_probability": [0.547337257503663, 0.4658724723221915], - "delta": [0.6044395589860037, -0.5240293090819207], - "gamma": [0.015620889396345561, 0.016149144698391314], - "theta": [-0.22254722153197432, 0.22755381063645636], - "vega": [0.19665373318968424, 0.20330401888012928], + "implied_volatility": [0.494, 0.482], + "in_the_money_probability": [0.54558925139931, 0.465831136209786], + "delta": [0.6039490632362865, -0.525237550169406], + "gamma": [0.015297136732317718, 0.015806160944019643], + "theta": [-0.21821351060901806, 0.22301627833773927], + "vega": [0.20095091693287098, 0.20763771616023433], } @@ -130,18 +130,18 @@ def test_covered_call_w_prev_position(nvidia): # Print useful information on screen assert outputs.model_dump(exclude={"data", "inputs"}, exclude_none=True) == { - "probability_of_profit": 0.7094641281976972, + "probability_of_profit": 0.7048129541301167, "profit_ranges": [(154.9, float("inf"))], "per_leg_cost": [-15899.0, 409.99999999999994], "strategy_cost": -15489.0, "minimum_return_in_the_domain": -8590.000000000002, "maximum_return_in_the_domain": 3011.0, - "implied_volatility": [0.0, 0.466], - "in_the_money_probability": [1.0, 0.2529827985340476], - "delta": [1.0, -0.30180572515271814], - "gamma": [0.0, 0.01413835937607837], - "theta": [0.0, 0.19521264859629808], - "vega": [0.0, 0.1779899391089498], + "implied_volatility": [0.0, 0.456], + "in_the_money_probability": [1.0, 0.256866624586934], + "delta": [1.0, -0.30713817729665704], + "gamma": [0.0, 0.013948977387090415], + "theta": [0.0, 0.19283555235589467], + "vega": [0.0, 0.1832408146218486], } @@ -184,7 +184,6 @@ def test_100_perc_itm(nvidia): def test_3_legs(nvidia): - inputs = Inputs.model_validate( nvidia | { @@ -249,21 +248,21 @@ def test_run_with_mc_array(nvidia): exclude={"data", "inputs"}, exclude_none=True ) == pytest.approx( { - "probability_of_profit": 0.56679, + "probability_of_profit": 0.56141, "profit_ranges": [(164.9, float("inf"))], "per_leg_cost": [-16899.0, 409.99999999999994], "strategy_cost": -16489.0, "minimum_return_in_the_domain": -9590.000000000002, "maximum_return_in_the_domain": 2011.0, - "implied_volatility": [0.0, 0.466], - "in_the_money_probability": [1.0, 0.2529827985340476], - "delta": [1.0, -0.30180572515271814], - "gamma": [0.0, 0.01413835937607837], - "theta": [0.0, 0.19521264859629808], - "vega": [0.0, 0.1779899391089498], - "average_profit_from_mc": 1348.2950516297647, - "average_loss_from_mc": -1388.1981940251862, - "probability_of_profit_from_mc": 0.56703, + "implied_volatility": [0.0, 0.456], + "in_the_money_probability": [1.0, 0.256866624586934], + "delta": [1.0, -0.30713817729665704], + "gamma": [0.0, 0.013948977387090415], + "theta": [0.0, 0.19283555235589467], + "vega": [0.0, 0.1832408146218486], + "average_profit_from_mc": 1358.707606387012, + "average_loss_from_mc": -1408.7310982891534, + "probability_of_profit_from_mc": 0.5616, }, rel=0.05, ) @@ -305,7 +304,7 @@ def test_100_itm_with_compute_expectation(nvidia): ) == pytest.approx( PROB_100_ITM_RESULT | { - "average_profit_from_mc": 493.3532975418169, + "average_profit_from_mc": 492.7834646111533, "average_loss_from_mc": 0.0, "probability_of_profit_from_mc": 1.0, }, @@ -314,7 +313,6 @@ def test_100_itm_with_compute_expectation(nvidia): def test_covered_call_w_normal_distribution(nvidia): - inputs = Inputs.model_validate( nvidia | { @@ -342,12 +340,11 @@ def test_covered_call_w_normal_distribution(nvidia): assert outputs.model_dump( exclude={"data", "inputs"}, exclude_none=True ) == pytest.approx( - COVERED_CALL_RESULT | {"probability_of_profit": 0.5666705670736036} + COVERED_CALL_RESULT | {"probability_of_profit": 0.565279550918542} ) def test_covered_call_w_laplace_distribution(nvidia): - inputs = Inputs.model_validate( nvidia | { @@ -375,5 +372,5 @@ def test_covered_call_w_laplace_distribution(nvidia): assert outputs.model_dump( exclude={"data", "inputs"}, exclude_none=True ) == pytest.approx( - COVERED_CALL_RESULT | {"probability_of_profit": 0.60568262830598} + COVERED_CALL_RESULT | {"probability_of_profit": 0.6037062828141202} ) diff --git a/tests/test_misc.py b/tests/test_misc.py index d5ac9c7..12c898c 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -38,7 +38,6 @@ def test_holidays(): @pytest.mark.benchmark def test_holidays_benchmark(days: int = 366): - start_date = dt.date(2024, 1, 1) for i in range(days): diff --git a/tests/test_models.py b/tests/test_models.py index 251d27f..43e8f62 100644 --- a/tests/test_models.py +++ b/tests/test_models.py @@ -6,7 +6,6 @@ def test_only_one_closed_position(nvidia): - inputs = nvidia | { # The covered call strategy is defined "strategy": [ @@ -80,7 +79,6 @@ def test_validate_dates(nvidia): def test_array_distribution_with_no_array(nvidia): - inputs = nvidia | { "distribution": "array", "strategy": [