diff --git a/index.jinja2.html b/index.jinja2.html index 41e236ef..b305d433 100644 --- a/index.jinja2.html +++ b/index.jinja2.html @@ -58,7 +58,7 @@ source code
-
+
diff --git a/nbs/mjc_004_process.ipynb b/nbs/mjc_004_process.ipynb index 814e1f09..7be08eb9 100644 --- a/nbs/mjc_004_process.ipynb +++ b/nbs/mjc_004_process.ipynb @@ -5237,15 +5237,6 @@ "print(f\"{len(df_links3)} -> {len(df3)} after title dedup\")" ] }, - { - "cell_type": "code", - "execution_count": 69, - "metadata": {}, - "outputs": [], - "source": [ - "# df3.iloc[3]['url']" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -5255,41 +5246,11 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "def format_flair(author_flair_text):\n", - " if author_flair_text:\n", - " return f\" {author_flair_text}\"\n", - " return \"\"\n", - "\n", - "import markdown\n", - "def commentmd2html(x: dict) -> str:\n", - " body = markdown.markdown(x['body'])\n", - " ts = pd.to_datetime(x['created_utc'], unit='s').strftime('%Y-%m-%d')\n", - " flair = format_flair(x['author_flair_text'])\n", - " url = prefix + x['permalink']\n", - " s = f\"\"\"

{x.get('author', 'anon')} [{x['score']:+}] {flair} {ts}

\n", - "{body}\n", - "\"\"\"\n", - " # print(s)\n", - " return s\n", - "\n", - "def collapsibe(title, body):\n", - " return f\"\"\"
{title}\n", - "{body}\n", - "
\n", - "\"\"\"\n", - "\n", - "prefix = \"https://reddit.com\"\n", - "def c2md(x):\n", - " return collapsibe(x['id'], commentmd2html(x))\n", - "\n", - "# # QC test\n", - "# x = df3.iloc[0].comments[0]\n", - "# from IPython.display import display, HTML\n", - "# display(HTML(c2md(x)))" + "from rrational.transform import join_uniq, chain_lists, format_flair, c2md, collapsibe, urls2a,url2a, unique_elements " ] }, { @@ -5317,33 +5278,6 @@ "d = df3.reset_index().sort_values(\"score\", ascending=False)\n", "\n", "\n", - "def url2a(url):\n", - " text = url\n", - " if \"reddit.com/r/rational\" in url:\n", - " text = url.split(\"/\")[-2]\n", - " # text = url.replace('https://reddit.com/r/rational/comments/', '')\n", - "\n", - " return f'{text}'\n", - "\n", - "\n", - "from collections import OrderedDict\n", - "def unique_elements(lst):\n", - " return list(OrderedDict.fromkeys(lst))\n", - "\n", - "def urls2a(urls, sep=None):\n", - " if isinstance(urls, str):\n", - " urls = urls.split(\"\\n\")\n", - "\n", - " # get uniques from list, keep in same order\n", - " urls = unique_elements(urls)\n", - "\n", - " a_els = [url2a(u) for u in urls]\n", - "\n", - " # now make into a html list\n", - " if sep is None:\n", - " return \"\"\n", - " else:\n", - " return sep.join(a_els)\n", "\n", "# make title have a link to first url\n", "d['title'] = d.progress_apply(lambda x: f'{x[\"title\"]}', axis=1)\n", @@ -5361,13 +5295,6 @@ "d['last_link_utc'] = d['last_link_utc'].dt.strftime('%Y-%m-%d')\n" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "code", "execution_count": 72, @@ -5636,51 +5563,15 @@ }, { "cell_type": "code", - "execution_count": 85, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'[{\"title\": \"title\", \"visible\": true, \"searchable\": true, \"footer\": \"title\"}, {\"title\": \"score\", \"visible\": true, \"searchable\": true, \"footer\": \"score\"}, {\"title\": \"#link\", \"visible\": true, \"searchable\": true, \"footer\": \"#link\"}, {\"title\": \"#comment\", \"visible\": true, \"searchable\": true, \"footer\": \"#comment\"}, {\"title\": \"first_link\", \"visible\": false, \"searchable\": false, \"footer\": \"first_link\"}, {\"title\": \"last_link\", \"visible\": false, \"searchable\": false, \"footer\": \"last_link\"}, {\"title\": \"urls\", \"visible\": true, \"searchable\": true, \"footer\": \"urls\"}, {\"title\": \"threads\", \"visible\": true, \"searchable\": true, \"footer\": \"threads\"}, {\"title\": \"comments\", \"visible\": false, \"searchable\": false, \"footer\": \"comments\"}]'" - ] - }, - "execution_count": 85, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# put into the html template\n", - "import jinja2\n", - "\n", - "environment = jinja2.Environment()\n", - "template = open(\"../index.jinja2.html\").read()\n", - "template = environment.from_string(template)\n", - "\n", - "\n", - "data = d.to_json(orient=\"values\")\n", - "\n", - "hidden = [\"comments\", \"first_link\", \"last_link\"]\n", - "columns = [\n", - " {\n", - " \"title\": c,\n", - " \"visible\": c not in hidden,\n", - " \"searchable\": c not in hidden,\n", - " \"footer\": c,\n", - " }\n", - " for c in d.columns\n", - "]\n", - "columns = json.dumps(columns)\n", - "\n", - "\n", - "html = template.render(\n", - " data=data,\n", - " columns=columns,\n", - ")\n", + "from rrational.export import export_df_2_html\n", "html_out = Path(\"../index2.html\").resolve()\n", - "open(html_out, \"w\").write(html)\n", - "columns" + "export_df_2_html(df=d, output=html_out,\n", + " hidden_columns=[\"comments\", \"first_link\", \"last_link\"],\n", + ")" ] }, { diff --git a/nbs/mjc_005_allm.ipynb b/nbs/mjc_005_allm.ipynb index db86a8f7..7092890f 100644 --- a/nbs/mjc_005_allm.ipynb +++ b/nbs/mjc_005_allm.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 222, "metadata": {}, "outputs": [], "source": [ @@ -17,7 +17,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 223, "metadata": {}, "outputs": [ { @@ -35,7 +35,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 224, "metadata": {}, "outputs": [ { @@ -309,7 +309,7 @@ "[15215 rows x 8 columns]" ] }, - "execution_count": 3, + "execution_count": 224, "metadata": {}, "output_type": "execute_result" } @@ -339,7 +339,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 225, "metadata": {}, "outputs": [], "source": [ @@ -368,13 +368,13 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 226, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "849883f56b274fe6a6094ca315b2783d", + "model_id": "2965012f90854d2e932badbde721f9ec", "version_major": 2, "version_minor": 0 }, @@ -391,7 +391,7 @@ "('2009-11-25T02:34:03', '2024-12-23T15:00:14')" ] }, - "execution_count": 5, + "execution_count": 226, "metadata": {}, "output_type": "execute_result" } @@ -415,7 +415,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 227, "metadata": {}, "outputs": [], "source": [ @@ -458,7 +458,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 228, "metadata": {}, "outputs": [], "source": [ @@ -517,7 +517,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 229, "metadata": {}, "outputs": [], "source": [ @@ -530,7 +530,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 230, "metadata": {}, "outputs": [], "source": [ @@ -565,7 +565,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 231, "metadata": {}, "outputs": [ { @@ -574,7 +574,7 @@ "PosixPath('../outputs/llm2/googlegeminiflash15')" ] }, - "execution_count": 10, + "execution_count": 231, "metadata": {}, "output_type": "execute_result" } @@ -589,7 +589,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 232, "metadata": {}, "outputs": [], "source": [ @@ -601,7 +601,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 233, "metadata": {}, "outputs": [], "source": [ @@ -612,7 +612,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 234, "metadata": {}, "outputs": [], "source": [ @@ -648,7 +648,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 235, "metadata": {}, "outputs": [ { @@ -658,7 +658,7 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mInvalidStateError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[22], line 44\u001b[0m\n\u001b[1;32m 42\u001b[0m loop \u001b[38;5;241m=\u001b[39m asyncio\u001b[38;5;241m.\u001b[39mget_event_loop()\n\u001b[1;32m 43\u001b[0m task \u001b[38;5;241m=\u001b[39m loop\u001b[38;5;241m.\u001b[39mcreate_task(main(df4))\n\u001b[0;32m---> 44\u001b[0m value \u001b[38;5;241m=\u001b[39m \u001b[43mtask\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 45\u001b[0m value\n", + "Cell \u001b[0;32mIn[235], line 44\u001b[0m\n\u001b[1;32m 42\u001b[0m loop \u001b[38;5;241m=\u001b[39m asyncio\u001b[38;5;241m.\u001b[39mget_event_loop()\n\u001b[1;32m 43\u001b[0m task \u001b[38;5;241m=\u001b[39m loop\u001b[38;5;241m.\u001b[39mcreate_task(main(df4))\n\u001b[0;32m---> 44\u001b[0m value \u001b[38;5;241m=\u001b[39m \u001b[43mtask\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 45\u001b[0m value\n", "\u001b[0;31mInvalidStateError\u001b[0m: Result is not set." ] }, @@ -667,577 +667,90 @@ "output_type": "stream", "text": [ "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 6739 [type=json_invalid, input_value='{\"description\": \"Multipl...ie gold mages have been', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "Unable to parse chat completion with error: {'message': 'The operation was aborted', 'code': 500}\n", - "Unable to parse chat completion with error: {'message': 'The operation was aborted', 'code': 500}\n", - "Unable to parse chat completion with error: {'message': 'The operation was aborted', 'code': 500}\n", - "Unable to parse chat completion with error: {'message': 'The operation was aborted', 'code': 500}\n", - "Unable to parse chat completion with error: {'message': 'The operation was aborted', 'code': 500}\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 8114 [type=json_invalid, input_value='{\"description\": \"A Moder...\", \" , \", \" , \"}```', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 28865 [type=json_invalid, input_value='{\"description\": \"Mother ..., \"\\\\\"Does this mean it', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35865 [type=json_invalid, input_value='{\"description\": \"Unsong ...he horror of Hell. Many', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33412 [type=json_invalid, input_value='{\"description\": \"[Post-R... is very reminiscent of', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35436 [type=json_invalid, input_value='{\"description\": \"In a wo... conveyed his reasoning', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35693 [type=json_invalid, input_value='{\"description\": \"Worth t... to escape into fantasy', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35511 [type=json_invalid, input_value='{\"description\": \"The Two...ssentially the Japanese', input_type=str]\n", + " Invalid JSON: EOF while parsing a string at line 1 column 35867 [type=json_invalid, input_value='{\"description\": \"Worth t... So don\\'t just hate it', input_type=str]\n", " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 1 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 1788 [type=json_invalid, input_value='{\"description\": \"Power A...Chekhov\\'s Gun, one way', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 2300 [type=json_invalid, input_value='{\"description\": \"Camera ...uldn\\'t be for everyone', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 37471 [type=json_invalid, input_value='{\"description\": \"A Reddi...the Death Note.\", \"tags', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 37592 [type=json_invalid, input_value='{\"description\": \"Alicorn... her a question and she', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a list at line 8 column 2 [type=json_invalid, input_value='{\"description\": \"Forty M... \\n , \\n \", \" \\n ', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33993 [type=json_invalid, input_value='{\"description\": \"A long,...I think, and it reminds', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36327 [type=json_invalid, input_value='{\"description\": \"Chapter...ren to avoid that.\", \">', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35036 [type=json_invalid, input_value='{\"description\": \"Epilogu...sy-Steps-Audiobook/B086', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35353 [type=json_invalid, input_value='{\"description\": \"Kaleido...e over callow.\", \"Or he', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 34686 [type=json_invalid, input_value='{\"description\": \"Suffici...n and help it\\'s people', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33855 [type=json_invalid, input_value='{\"description\": \"Naruto ...Memory-Concealing_Manip', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35032 [type=json_invalid, input_value='{\"description\": \"The Ero...ly, and webfic is a lot', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 2 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 1353 [type=json_invalid, input_value='{\"description\": \"Lackada...art, all the characters', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "Unable to parse chat completion with error: {'message': 'The operation was aborted', 'code': 500}\n", - "Unable to parse chat completion with error: {'message': 'The operation was aborted', 'code': 500}\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a value at line 1 column 33275 [type=json_invalid, input_value='{\"description\": \"Interlu... \", \" , ', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36651 [type=json_invalid, input_value='{\"description\": \"Worth t...istance.\", \"> Thank you', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35449 [type=json_invalid, input_value='{\"description\": \"SCP-140...g end-of-reality Keters', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 31591 [type=json_invalid, input_value='{\"description\": \"Macrono...d.com/fiction/69480/the', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 3 of 51\n", "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 176 [type=json_invalid, input_value='{\"description\": \"The Rig...ason and intuition. Ha', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33392 [type=json_invalid, input_value='{\"description\": \"Worth t...\", \"Probably means that', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35527 [type=json_invalid, input_value='{\"description\": \"A Rousi...selfless) character who', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 34282 [type=json_invalid, input_value='{\"description\": \"Lisi is...knowledge that there is', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a value at line 1 column 34968 [type=json_invalid, input_value='{\"description\": \"Diamond...ity in a strange way.\",', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33942 [type=json_invalid, input_value='{\"description\": \"Worth t...her is just hanging out', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a value at line 188 column 8 [type=json_invalid, input_value='{\"description\": \"Grakhui... \\n ', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 34643 [type=json_invalid, input_value='{\"description\": \"Worth t...\\'s got a wide range of', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35317 [type=json_invalid, input_value='{\"description\": \"Anyblad... hero, I fix everything', input_type=str]\n", + " Invalid JSON: EOF while parsing a value at line 1 column 34904 [type=json_invalid, input_value='{\"description\": \"A long ...ctional relationship.\",', input_type=str]\n", " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 4 of 51\n", "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 1074 [type=json_invalid, input_value='{\"description\": \"Child 4...t an artistic aesthetic', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "Unable to parse chat completion with error: {'message': 'The operation was aborted', 'code': 500}\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36470 [type=json_invalid, input_value='{\"description\": \"The Str...\\'s Guild, the DKE, and', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33533 [type=json_invalid, input_value='{\"description\": \"Worth t... increases in the Locus', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 34616 [type=json_invalid, input_value='{\"description\": \"Wuxiawo...s.\", \"On the other hand', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33234 [type=json_invalid, input_value='{\"description\": \"Worth t... \"> This is adorable!\\\\', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 31959 [type=json_invalid, input_value='{\"description\": \"Worth t...poisons (given by Gemma', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33896 [type=json_invalid, input_value='{\"description\": \"Legacy ...erent perspective IMO\\\\', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 34346 [type=json_invalid, input_value='{\"description\": \"Worth t...at, no special meaning,', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33981 [type=json_invalid, input_value='{\"description\": \"Worth t...ith a sufficiently cool', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 34080 [type=json_invalid, input_value='{\"description\": \"Worth t...s of ourselves.\\\\\"[Life', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33851 [type=json_invalid, input_value='{\"description\": \"Worth t... follow get temporarily', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33682 [type=json_invalid, input_value='{\"description\": \"Worth t...eur competition now and', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 32694 [type=json_invalid, input_value='{\"description\": \"Worth t... magic, bone magic, the', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33604 [type=json_invalid, input_value='{\"description\": \"Worth t...ed**_Cellist, Alexander', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33031 [type=json_invalid, input_value='{\"description\": \"Worth t...n and Amaryllis. “You', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 32743 [type=json_invalid, input_value='{\"description\": \"Worth t...s at the end of the day', input_type=str]\n", + " Invalid JSON: EOF while parsing a string at line 1 column 34090 [type=json_invalid, input_value='{\"description\": \"Worth t...w smart he is right now', input_type=str]\n", " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 5 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35966 [type=json_invalid, input_value='{\"description\": \"City of.../memberpage.php?uid=206', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36663 [type=json_invalid, input_value='{\"description\": \"The Uno...ce restricted and doesn', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 6 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35960 [type=json_invalid, input_value='{\"description\": \"This JS...\\'s what we\\'ve done in', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 7 of 51\n", "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 2552 [type=json_invalid, input_value='{\"description\": \"A long ...ace.\", \"\\\\\"Look, if you', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 3 column 8645 [type=json_invalid, input_value='{\"description\": \"A My Li...v3k9es6k6ms/AAB5iscpij7', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 34897 [type=json_invalid, input_value='{\"description\": \"Bouletc...there.\", \"Three clicks,', input_type=str]\n", + " Invalid JSON: EOF while parsing a string at line 1 column 34727 [type=json_invalid, input_value='{\"description\": \"Bouletc... a great book, Dogsbody', input_type=str]\n", " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 8 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 14171 [type=json_invalid, input_value='{\"description\": \"PTOOS (...s she notes\\\\\" or \\\\\"as', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 9 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36199 [type=json_invalid, input_value='{\"description\": \"Mystery...es two or three editing', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 32403 [type=json_invalid, input_value='{\"description\": \"Chapter...nce the endgame of Worm', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 34542 [type=json_invalid, input_value='{\"description\": \"Worth t...More elfish?\\\\\" I asked', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 10 of 51\n", "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 1361 [type=json_invalid, input_value='{\"description\": \"A humor...anges it from a shaggy-', input_type=str]\n", + " Invalid JSON: EOF while parsing a string at line 1 column 803 [type=json_invalid, input_value='{\"description\": \"A humor... to be interesting.\", \"', input_type=str]\n", " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35743 [type=json_invalid, input_value='{\"description\": \"This JS...r a 3 cost for Zorian\\'', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35718 [type=json_invalid, input_value='{\"description\": \"Forty M...will typically get abre', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 34199 [type=json_invalid, input_value='{\"description\": \"The Pat...ters.\", \"How? Isn\\'t an', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36004 [type=json_invalid, input_value='{\"description\": \"The Gre...outrageous and terrible', input_type=str]\n", + " Invalid JSON: EOF while parsing a string at line 1 column 34537 [type=json_invalid, input_value='{\"description\": \"Forty M... is school in the whole', input_type=str]\n", " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 11 of 51\n", - "Unable to parse chat completion with error: {'message': 'The operation was aborted', 'code': 500}\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 28153 [type=json_invalid, input_value='{\"description\": \"Worm fa...n invaluable.\\\\\"\", \"\\\\\"', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 12 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 1114 [type=json_invalid, input_value='{\"description\": \"A user ...ople who, in some sense', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a value at line 3 column 8553 [type=json_invalid, input_value='{\"description\": \"The Wav... \" , \", \" , \", \" ,', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33191 [type=json_invalid, input_value='{\"description\": \"Reitera...lindness)\", \"[[Hermione', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36410 [type=json_invalid, input_value='{\"description\": \"A long ...\"Previously we\\'ve been', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36274 [type=json_invalid, input_value='{\"description\": \"This JS...was just that trying to', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 34896 [type=json_invalid, input_value='{\"description\": \"Humanit...exploring space.\", \"Wow', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35920 [type=json_invalid, input_value='{\"description\": \"Life Be...\\\\\" with Ridley Scott\\'', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36550 [type=json_invalid, input_value='{\"description\": \"This is...ely from [here](http://', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 13 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 37145 [type=json_invalid, input_value='{\"description\": \"A discu...t way would probably be', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 14 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 2407 [type=json_invalid, input_value='{\"description\": \"A Harry...orty.\", \">rick and mort', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 37419 [type=json_invalid, input_value='{\"description\": \"A Reddi...enders were the ones to', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 37466 [type=json_invalid, input_value='{\"description\": \"Mecha t...lligence may be related', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 15 of 51\n", "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 1714 [type=json_invalid, input_value='{\"description\": \"Mother ...real quick?\\'\\\\\", \\\\\"\\'', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "Unable to parse chat completion with error: {'message': 'The operation was aborted', 'code': 500}\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 34854 [type=json_invalid, input_value='{\"description\": \"A Reddi...’t very rational, but', input_type=str]\n", + " Invalid JSON: EOF while parsing a string at line 1 column 1647 [type=json_invalid, input_value='{\"description\": \"Mother ..., \"Does this mean it\\'s', input_type=str]\n", " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 16 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 1039 [type=json_invalid, input_value='{\"description\": \"Time Br... contrived coincidences', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 1392 [type=json_invalid, input_value='{\"description\": \"Max Gla... Kind of lost interest,', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 8120 [type=json_invalid, input_value='{\"description\": \"Worth t...e DM compact on grounds', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 37190 [type=json_invalid, input_value='{\"description\": \"This JS...or literary inspiration', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 34316 [type=json_invalid, input_value='{\"description\": \"Worth t...hinks he \\\\\"won\\\\\") but', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 34164 [type=json_invalid, input_value='{\"description\": \"I Am No...ly) of something that I', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: control character (\\u0000-\\u001F) found while parsing a string at line 1 column 22624 [type=json_invalid, input_value='{\"description\": \"Mother ...ng hypothesis now).\", \"', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 17 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 37810 [type=json_invalid, input_value='{\"description\": \"This ar... ageing, can it?\", \"Not', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33146 [type=json_invalid, input_value='{\"description\": \"GaBeRoc...rs/A.%20M._Dellamonica.', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 18 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: control character (\\u0000-\\u001F) found while parsing a string at line 1 column 7132 [type=json_invalid, input_value='{\"description\": \"This JS...ht-provoking fiction.\"}', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 4 column 10957 [type=json_invalid, input_value='{\"description\": \"Worth t..., i mean catch his eyes', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36372 [type=json_invalid, input_value='{\"description\": \"This en... this contingency.\", \"F', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 19 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35530 [type=json_invalid, input_value='{\"description\": \"The Two...ower, super senses, and', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35354 [type=json_invalid, input_value='{\"description\": \"Ambienc...ossibilities with alien', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35540 [type=json_invalid, input_value='{\"description\": \"Beyond ...and there was a chapter', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 20 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35169 [type=json_invalid, input_value='{\"description\": \"This is...t he would have thought', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 12653 [type=json_invalid, input_value='{\"description\": \"The sto...\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\\', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 21 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35231 [type=json_invalid, input_value='{\"description\": \"This JS...wo\\'s lab, with Giovani', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35242 [type=json_invalid, input_value='{\"description\": \"This Re...you really just want to', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36206 [type=json_invalid, input_value='{\"description\": \"It\\'s D...Secondarily, how do you', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35041 [type=json_invalid, input_value='{\"description\": \"Jason S...ded the blood.\", \"If so', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36218 [type=json_invalid, input_value='{\"description\": \"A ratio...head via Jake and Quata', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 22 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 801 [type=json_invalid, input_value='{\"description\": \"Princes...c shorts with more of a', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 23 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 3240 [type=json_invalid, input_value='{\"description\": \"Chili a...eems kind of like a cop', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 4418 [type=json_invalid, input_value='{\"description\": \"Game By...probably weird, though,', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 24 of 51\n", "Processed batch 25 of 51\n", "Processed batch 26 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 37937 [type=json_invalid, input_value='{\"description\": \"The Seq...who they first targeted', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 27 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 37824 [type=json_invalid, input_value='{\"description\": \"This bl...direct them.\", \"The nec', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36739 [type=json_invalid, input_value='{\"description\": \"Chapter...maryllis always thought', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 28 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a list at line 1 column 17139 [type=json_invalid, input_value='{\"description\": \"The Wav..., \" , \", \" , \", \" ', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 37481 [type=json_invalid, input_value='{\"description\": \"Bernie ...ires and werewolves, oh', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 29 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35986 [type=json_invalid, input_value='{\"description\": \"MindLev... \"Gamma ray bursts from', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 30 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 1731 [type=json_invalid, input_value='{\"description\": \"A Song ...agonist is a villain? >', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 2127 [type=json_invalid, input_value='{\"description\": \"A podca...t\\'s irrational.\", \"The', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 3030 [type=json_invalid, input_value='{\"description\": \"The Fac...or him to one degree it', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 31 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36223 [type=json_invalid, input_value='{\"description\": \"Fūinju...ous chapter especially:', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36256 [type=json_invalid, input_value='{\"description\": \"Coheren...elligence to manipulate', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 37628 [type=json_invalid, input_value='{\"description\": \"This JS...n go so far as to laugh', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 32 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36930 [type=json_invalid, input_value='{\"description\": \"A Reddi...on results in something', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 37428 [type=json_invalid, input_value='{\"description\": \"This Wa...umps-election/#420010d1', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 34670 [type=json_invalid, input_value='{\"description\": \"Pyrebou...to get in on the ground', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 33 of 51\n", "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 1705 [type=json_invalid, input_value='{\"description\": \"Story m...pletely over this major', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 37939 [type=json_invalid, input_value='{\"description\": \"Discuss... thinking of Wildbow\\'s', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36983 [type=json_invalid, input_value='{\"description\": \"Hide Yo...e general field.\", \"\\\\\"', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a value at line 1 column 36322 [type=json_invalid, input_value='{\"description\": \"A fanta...each of the chapters.\",', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35004 [type=json_invalid, input_value='{\"description\": \"This JS...ious of him, overriding', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 37497 [type=json_invalid, input_value='{\"description\": \"This is...st place is either dead', input_type=str]\n", + " Invalid JSON: EOF while parsing a string at line 1 column 35001 [type=json_invalid, input_value='{\"description\": \"A Worm ...wrong\", \"Soul awareness', input_type=str]\n", " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 34 of 51\n", "Processed batch 35 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 1377 [type=json_invalid, input_value='{\"description\": \"MGTOW i...November 2017, he had 4', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 37169 [type=json_invalid, input_value='{\"description\": \"Worth t... involve a return there', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 36 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 27092 [type=json_invalid, input_value='{\"description\": \"Web ser... temp-OP Still magic to', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36153 [type=json_invalid, input_value='{\"description\": \"This is...mulacrum automatically,', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 37 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 10137 [type=json_invalid, input_value='{\"description\": \"This JS...s...\", \"I think Joon is', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35573 [type=json_invalid, input_value='{\"description\": \"Mother ...ing, and engaging blend', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 38 of 51\n", - "Unable to parse chat completion with error: {'message': 'Provider returned error', 'code': 429, 'metadata': {'raw': '{\\n \"error\": {\\n \"code\": 429,\\n \"message\": \"Resource exhausted. Please try again later. Please refer to https://cloud.google.com/vertex-ai/generative-ai/docs/error-code-429 for more details.\",\\n \"status\": \"RESOURCE_EXHAUSTED\"\\n }\\n}\\n', 'provider_name': 'Google'}}\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a value at line 1 column 36569 [type=json_invalid, input_value='{\"description\": \"Divine ...eat and very helpful!\",', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 38366 [type=json_invalid, input_value='{\"description\": \"Analysi... \"It\\'s hard to try, it', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33458 [type=json_invalid, input_value='{\"description\": \"Hide fr...can\\'t pull information', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 39 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35682 [type=json_invalid, input_value='{\"description\": \"A user ...tack the spell until it', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a list at line 1 column 23176 [type=json_invalid, input_value='{\"description\": \"OCTO is... \", \" , \", \" , \", \"', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35741 [type=json_invalid, input_value='{\"description\": \"This JS...s - i.e. heart and neck', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35904 [type=json_invalid, input_value='{\"description\": \"rationa...ely, I mean when people', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 40 of 51\n", "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35914 [type=json_invalid, input_value='{\"description\": \"This Re...t had a chance to watch', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 34566 [type=json_invalid, input_value='{\"description\": \"This is...to something that makes', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35069 [type=json_invalid, input_value='{\"description\": \"This is...manoid, otherwise.\", \"I', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 32555 [type=json_invalid, input_value='{\"description\": \"The aut...\", \"Yknow, it occurs to', input_type=str]\n", + " Invalid JSON: EOF while parsing a string at line 1 column 18928 [type=json_invalid, input_value='{\"description\": \"This Re... is very much an out-of', input_type=str]\n", " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 41 of 51\n", "Processed batch 42 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35279 [type=json_invalid, input_value='{\"description\": \"A ratio... or two of chicken wire', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36585 [type=json_invalid, input_value='{\"description\": \"Discuss...th plentiful in the air', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a value at line 1 column 36312 [type=json_invalid, input_value='{\"description\": \"RoyalRo...instead of a library.\",', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35989 [type=json_invalid, input_value='{\"description\": \"The r/r.... However, the graphic', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 43 of 51\n", "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a value at line 902 column 5 [type=json_invalid, input_value='{\"description\": \"A Journ... , \"rating_plot\"\\n ,', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 38392 [type=json_invalid, input_value='{\"description\": \"The One... lightspeed and not the', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 34621 [type=json_invalid, input_value='{\"description\": \"MoodyLi...ing about a girl having', input_type=str]\n", + " Invalid JSON: EOF while parsing a string at line 1 column 35382 [type=json_invalid, input_value='{\"description\": \"MoodyLi... books I\\'ve read.\", \"I', input_type=str]\n", " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 44 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a value at line 932 column 20 [type=json_invalid, input_value='{\"description\": \"The URL...,\\n\"reviews_summary\" ,', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 30879 [type=json_invalid, input_value='{\"description\": \"A game ...h wish, but I\\'m buying', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36907 [type=json_invalid, input_value='{\"description\": \"This JS...nterlude would normally', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35592 [type=json_invalid, input_value='{\"description\": \"Mother ...hile, even if it can\\'t', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35837 [type=json_invalid, input_value='{\"description\": \"This JS...hy is to adapt and ride', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 45 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 1872 [type=json_invalid, input_value='{\"description\": \"A \\\\\"}}...ng_worldbuilding\\\\\": 6}', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35827 [type=json_invalid, input_value='{\"description\": \"A gay s...amination.\", \"> Perhaps', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 46 of 51\n", "Processed batch 47 of 51\n", - "Unable to parse chat completion with error: {'message': 'The operation was aborted', 'code': 500}\n", "Processed batch 48 of 51\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33671 [type=json_invalid, input_value='{\"description\": \"A Cinde...8cca-c308-412f-bfcf-901', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 37455 [type=json_invalid, input_value='{\"description\": \"A draft...s to make more sense to', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35809 [type=json_invalid, input_value='{\"description\": \"Discuss...ing, and discussions of', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 36235 [type=json_invalid, input_value='{\"description\": \"This is...uivalent of red Robe 2:', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33575 [type=json_invalid, input_value='{\"description\": \"Discuss...hat way is twofold.\", \"', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35042 [type=json_invalid, input_value='{\"description\": \"Worth t...used for emergency luck', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 49 of 51\n", - "Unable to parse chat completion with error: {'message': 'The operation was aborted', 'code': 500}\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a value at line 1 column 36399 [type=json_invalid, input_value='{\"description\": \"Project...orny discussion here.\",', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 35320 [type=json_invalid, input_value='{\"description\": \"The r/r...n appropriate time.\", \"', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 32898 [type=json_invalid, input_value='{\"description\": \"Discuss...l his round comes_.\", \"', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 50 of 51\n", "1 validation error for FictionInfo\n", - " Invalid JSON: control character (\\u0000-\\u001F) found while parsing a string at line 1 column 1457 [type=json_invalid, input_value='{\"description\": \"A scien...nity and stereotypes.\"}', input_type=str]\n", + " Invalid JSON: control character (\\u0000-\\u001F) found while parsing a string at line 1 column 1640 [type=json_invalid, input_value='{\"description\": \"A study...round in the fiction.\"}', input_type=str]\n", " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "1 validation error for FictionInfo\n", - " Invalid JSON: control character (\\u0000-\\u001F) found while parsing a string at line 1 column 1526 [type=json_invalid, input_value='{\"description\": \"This st...f evidence presented.\"}', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: control character (\\u0000-\\u001F) found while parsing a string at line 1 column 2158 [type=json_invalid, input_value='{\"description\": \"A scien...f biased conclusions.\"}', input_type=str]\n", - " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", - "1 validation error for FictionInfo\n", - " Invalid JSON: EOF while parsing a string at line 1 column 33674 [type=json_invalid, input_value='{\"description\": \"Freefal...r by a factor of *200*.', input_type=str]\n", + " Invalid JSON: control character (\\u0000-\\u001F) found while parsing a string at line 1 column 1728 [type=json_invalid, input_value='{\"description\": \"A scien...he community members.\"}', input_type=str]\n", " For further information visit https://errors.pydantic.dev/2.10/v/json_invalid\n", "Processed batch 51 of 51\n", "All batches processed\n" @@ -1294,476 +807,19 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 236, "metadata": {}, "outputs": [ { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
titledescriptiontagsreviews_quotesreviews_summaryreccomendationsdisrecommendationswhyif_you_liked_x_you_will_like_thisrating_qualityrating_rationalityrating_writingrating_plotrating_characterrating_worldbuildingcontexttitle2model
0Worth the CandleWorth the Candle is a long, original, complete...[web serial, LitRPG, isekai, portal fantasy, o...[This is a self-insert litRPG portal fantasy, ...Overall, Worth the Candle received overwhelmin...Readers frequently praised the story's compell...Some readers found the sheer length of the wor...Readers of r/rational would likely enjoy Worth...[Mother of Learning, HPMOR, Worm, Erfworld, Lu...9.07.08.58.58.09.0\\n\\n----- Thread 10262 -----\\n\\n## [RT][WIP] W...Worth the Candlegoogle/gemini-flash-1.5
1Alexander Wales - The Metropolitan Man, Shadow...Alexander Wales's works, including *Shadows of...[web serial, rational fiction, fantasy, progre...[Damn. That was like reading some of Sanderson...The reviews are overwhelmingly positive, with ...Readers strongly recommend Alexander Wales's w...Some readers express concerns about the infreq...Readers of r/rational would likely enjoy Alexa...[Brandon Sanderson, Harry Potter, Worm, Mother...9.07.59.09.08.58.0\\n\\n----- Thread 10262 -----\\n\\n## [HF][DC] Sh...Alexander Wales - The Metropolitan Man, Shadow...google/gemini-flash-1.5
2Mother of LearningMother of Learning is a web serial about Zoria...[web serial, original fiction, fantasy, time l...[With dread but cautious optimism, Enthusiasti...Generally very positive; praised for clever pr...Readers praise its consistent internal logic, ...Some readers find the writing style to be roug...Readers of r/rational will appreciate the stor...[Time Braid, HPMOR, Worm]9.07.57.09.08.59.0\\n\\n----- Thread 10262 -----\\n\\n## [HF] Mother...Mother of Learninggoogle/gemini-flash-1.5
3A Practical Guide to EvilA Practical Guide to Evil is a long-running we...[web serial, fantasy, complete, grimdark, roma...[It's probably one of the better written ones ...Generally very positive, praising the writing,...Readers praise its well-developed characters, ...Some readers find the frequent cliffhangers ir...Readers of r/rational will likely enjoy this f...[Worm, Shadows of the Limelight]9.57.08.09.09.09.0\\n\\n----- Thread 10262 -----\\n\\n## [RT] A Prac...A Practical Guide to Evilgoogle/gemini-flash-1.5
4WormWorm is a long, complete web serial (1.7 milli...[web serial, complete, superhero, supervillain...[I wouldn't really describe Worm as a rational...Worm receives overwhelmingly positive reviews,...Readers recommend Worm for its compelling char...Some find the story too grim, dark, and depres...Readers of r/rational might enjoy Worm for its...[HPMOR, A Practical Guide to Evil, Other Wildb...9.07.08.58.58.09.5\\n\\n----- Thread 10262 -----\\n\\n## Worm\\n\\n* A...Wormgoogle/gemini-flash-1.5
.........................................................
15027The IncrediblesThe Incredibles is mentioned in passing in a d...[web serial, scifi, superhero, deconstruction,...[> Why is it called *Worm* instead of *Parahum...While initially compared to The Incredibles fo...The mention of The Incredibles in the context ...Some users find the initial comparison to The ...Readers interested in exploring the various wa...[Worm]7.07.07.07.06.07.0\\n\\n----- Thread 10262 -----\\n\\n## Worm Reread...The Incrediblesgoogle/gemini-flash-1.5
15028Steelheart (The Reckoners)Steelheart is a superhero deconstruction novel...[novel, complete, superhero, supervillain, dec...[It sure looks derivative. I've seen these tro...Readers' opinions on Steelheart were divided. ...Some readers appreciated Steelheart's subvers...Some readers found Steelheart derivative, citi...Readers of r/rational might enjoy Steelheart i...[Worm, The Incredibles, Watchmen, Megamind, Mi...7.06.07.07.06.07.0\\n\\n----- Thread 10262 -----\\n\\n## Worm Reread...Steelheart (The Reckoners): 9780385743570: San...google/gemini-flash-1.5
15029Orthogonality Thesis Discussion SummaryThe Orthogonality Thesis, a concept from LessW...[rationality, AI, futurism, philosophy, LessWr...[\"If you read the sequences at all, and get an...The discussions were highly engaging for those...Users found the discussions engaging for their...Some users found the discussions overly theore...Readers interested in AI alignment, rationalit...[Discussions on Friendly AI, Sequences by Elie...6.09.00.00.07.00.0\\n\\n----- Thread 10262 -----\\n\\n...ven in medi...Orthogonality thesisgoogle/gemini-flash-1.5
15030When Starting School, Younger Children Are Mor...This Harvard Gazette article discusses a study...[news article, psychology, ADHD, self-diagnosi...[> **u/Magodo** [-6] *Ankh-Morpork City Watch...The study itself is not discussed much; one us...The article's mention generated a discussion a...The article itself isn't fiction, generating d...The discussion touches upon themes relevant to...[]0.00.00.00.00.00.0\\n\\n----- Thread 10262 -----\\n\\n## [D] Friday ...When starting school, younger children are mor...google/gemini-flash-1.5
15031Is There A Replicability Crisis In Psychology?...A Reddit user mentions a science article explo...[non-fiction, psychology, science, replicabili...[Just want to throw this into the void:\\nI wis...The article is mentioned very briefly by u/Mag...No recommendations are given for the article i...The article itself isn't fiction, and its ment...Readers interested in the philosophy of scienc...[]0.00.00.00.00.00.0\\n\\n----- Thread 10262 -----\\n\\n## [D] Friday ...Is There A Replicability Crisis In Psychology?...google/gemini-flash-1.5
\n", - "

15032 rows × 18 columns

\n", - "
" - ], - "text/plain": [ - " title \\\n", - "0 Worth the Candle \n", - "1 Alexander Wales - The Metropolitan Man, Shadow... \n", - "2 Mother of Learning \n", - "3 A Practical Guide to Evil \n", - "4 Worm \n", - "... ... \n", - "15027 The Incredibles \n", - "15028 Steelheart (The Reckoners) \n", - "15029 Orthogonality Thesis Discussion Summary \n", - "15030 When Starting School, Younger Children Are Mor... \n", - "15031 Is There A Replicability Crisis In Psychology?... \n", - "\n", - " description \\\n", - "0 Worth the Candle is a long, original, complete... \n", - "1 Alexander Wales's works, including *Shadows of... \n", - "2 Mother of Learning is a web serial about Zoria... \n", - "3 A Practical Guide to Evil is a long-running we... \n", - "4 Worm is a long, complete web serial (1.7 milli... \n", - "... ... \n", - "15027 The Incredibles is mentioned in passing in a d... \n", - "15028 Steelheart is a superhero deconstruction novel... \n", - "15029 The Orthogonality Thesis, a concept from LessW... \n", - "15030 This Harvard Gazette article discusses a study... \n", - "15031 A Reddit user mentions a science article explo... \n", - "\n", - " tags \\\n", - "0 [web serial, LitRPG, isekai, portal fantasy, o... \n", - "1 [web serial, rational fiction, fantasy, progre... \n", - "2 [web serial, original fiction, fantasy, time l... \n", - "3 [web serial, fantasy, complete, grimdark, roma... \n", - "4 [web serial, complete, superhero, supervillain... \n", - "... ... \n", - "15027 [web serial, scifi, superhero, deconstruction,... \n", - "15028 [novel, complete, superhero, supervillain, dec... \n", - "15029 [rationality, AI, futurism, philosophy, LessWr... \n", - "15030 [news article, psychology, ADHD, self-diagnosi... \n", - "15031 [non-fiction, psychology, science, replicabili... \n", - "\n", - " reviews_quotes \\\n", - "0 [This is a self-insert litRPG portal fantasy, ... \n", - "1 [Damn. That was like reading some of Sanderson... \n", - "2 [With dread but cautious optimism, Enthusiasti... \n", - "3 [It's probably one of the better written ones ... \n", - "4 [I wouldn't really describe Worm as a rational... \n", - "... ... \n", - "15027 [> Why is it called *Worm* instead of *Parahum... \n", - "15028 [It sure looks derivative. I've seen these tro... \n", - "15029 [\"If you read the sequences at all, and get an... \n", - "15030 [> **u/Magodo** [-6] *Ankh-Morpork City Watch... \n", - "15031 [Just want to throw this into the void:\\nI wis... \n", - "\n", - " reviews_summary \\\n", - "0 Overall, Worth the Candle received overwhelmin... \n", - "1 The reviews are overwhelmingly positive, with ... \n", - "2 Generally very positive; praised for clever pr... \n", - "3 Generally very positive, praising the writing,... \n", - "4 Worm receives overwhelmingly positive reviews,... \n", - "... ... \n", - "15027 While initially compared to The Incredibles fo... \n", - "15028 Readers' opinions on Steelheart were divided. ... \n", - "15029 The discussions were highly engaging for those... \n", - "15030 The study itself is not discussed much; one us... \n", - "15031 The article is mentioned very briefly by u/Mag... \n", - "\n", - " reccomendations \\\n", - "0 Readers frequently praised the story's compell... \n", - "1 Readers strongly recommend Alexander Wales's w... \n", - "2 Readers praise its consistent internal logic, ... \n", - "3 Readers praise its well-developed characters, ... \n", - "4 Readers recommend Worm for its compelling char... \n", - "... ... \n", - "15027 The mention of The Incredibles in the context ... \n", - "15028 Some readers appreciated Steelheart's subvers... \n", - "15029 Users found the discussions engaging for their... \n", - "15030 The article's mention generated a discussion a... \n", - "15031 No recommendations are given for the article i... \n", - "\n", - " disrecommendations \\\n", - "0 Some readers found the sheer length of the wor... \n", - "1 Some readers express concerns about the infreq... \n", - "2 Some readers find the writing style to be roug... \n", - "3 Some readers find the frequent cliffhangers ir... \n", - "4 Some find the story too grim, dark, and depres... \n", - "... ... \n", - "15027 Some users find the initial comparison to The ... \n", - "15028 Some readers found Steelheart derivative, citi... \n", - "15029 Some users found the discussions overly theore... \n", - "15030 The article itself isn't fiction, generating d... \n", - "15031 The article itself isn't fiction, and its ment... \n", - "\n", - " why \\\n", - "0 Readers of r/rational would likely enjoy Worth... \n", - "1 Readers of r/rational would likely enjoy Alexa... \n", - "2 Readers of r/rational will appreciate the stor... \n", - "3 Readers of r/rational will likely enjoy this f... \n", - "4 Readers of r/rational might enjoy Worm for its... \n", - "... ... \n", - "15027 Readers interested in exploring the various wa... \n", - "15028 Readers of r/rational might enjoy Steelheart i... \n", - "15029 Readers interested in AI alignment, rationalit... \n", - "15030 The discussion touches upon themes relevant to... \n", - "15031 Readers interested in the philosophy of scienc... \n", - "\n", - " if_you_liked_x_you_will_like_this rating_quality \\\n", - "0 [Mother of Learning, HPMOR, Worm, Erfworld, Lu... 9.0 \n", - "1 [Brandon Sanderson, Harry Potter, Worm, Mother... 9.0 \n", - "2 [Time Braid, HPMOR, Worm] 9.0 \n", - "3 [Worm, Shadows of the Limelight] 9.5 \n", - "4 [HPMOR, A Practical Guide to Evil, Other Wildb... 9.0 \n", - "... ... ... \n", - "15027 [Worm] 7.0 \n", - "15028 [Worm, The Incredibles, Watchmen, Megamind, Mi... 7.0 \n", - "15029 [Discussions on Friendly AI, Sequences by Elie... 6.0 \n", - "15030 [] 0.0 \n", - "15031 [] 0.0 \n", - "\n", - " rating_rationality rating_writing rating_plot rating_character \\\n", - "0 7.0 8.5 8.5 8.0 \n", - "1 7.5 9.0 9.0 8.5 \n", - "2 7.5 7.0 9.0 8.5 \n", - "3 7.0 8.0 9.0 9.0 \n", - "4 7.0 8.5 8.5 8.0 \n", - "... ... ... ... ... \n", - "15027 7.0 7.0 7.0 6.0 \n", - "15028 6.0 7.0 7.0 6.0 \n", - "15029 9.0 0.0 0.0 7.0 \n", - "15030 0.0 0.0 0.0 0.0 \n", - "15031 0.0 0.0 0.0 0.0 \n", - "\n", - " rating_worldbuilding \\\n", - "0 9.0 \n", - "1 8.0 \n", - "2 9.0 \n", - "3 9.0 \n", - "4 9.5 \n", - "... ... \n", - "15027 7.0 \n", - "15028 7.0 \n", - "15029 0.0 \n", - "15030 0.0 \n", - "15031 0.0 \n", - "\n", - " context \\\n", - "0 \\n\\n----- Thread 10262 -----\\n\\n## [RT][WIP] W... \n", - "1 \\n\\n----- Thread 10262 -----\\n\\n## [HF][DC] Sh... \n", - "2 \\n\\n----- Thread 10262 -----\\n\\n## [HF] Mother... \n", - "3 \\n\\n----- Thread 10262 -----\\n\\n## [RT] A Prac... \n", - "4 \\n\\n----- Thread 10262 -----\\n\\n## Worm\\n\\n* A... \n", - "... ... \n", - "15027 \\n\\n----- Thread 10262 -----\\n\\n## Worm Reread... \n", - "15028 \\n\\n----- Thread 10262 -----\\n\\n## Worm Reread... \n", - "15029 \\n\\n----- Thread 10262 -----\\n\\n...ven in medi... \n", - "15030 \\n\\n----- Thread 10262 -----\\n\\n## [D] Friday ... \n", - "15031 \\n\\n----- Thread 10262 -----\\n\\n## [D] Friday ... \n", - "\n", - " title2 \\\n", - "0 Worth the Candle \n", - "1 Alexander Wales - The Metropolitan Man, Shadow... \n", - "2 Mother of Learning \n", - "3 A Practical Guide to Evil \n", - "4 Worm \n", - "... ... \n", - "15027 The Incredibles \n", - "15028 Steelheart (The Reckoners): 9780385743570: San... \n", - "15029 Orthogonality thesis \n", - "15030 When starting school, younger children are mor... \n", - "15031 Is There A Replicability Crisis In Psychology?... \n", - "\n", - " model \n", - "0 google/gemini-flash-1.5 \n", - "1 google/gemini-flash-1.5 \n", - "2 google/gemini-flash-1.5 \n", - "3 google/gemini-flash-1.5 \n", - "4 google/gemini-flash-1.5 \n", - "... ... \n", - "15027 google/gemini-flash-1.5 \n", - "15028 google/gemini-flash-1.5 \n", - "15029 google/gemini-flash-1.5 \n", - "15030 google/gemini-flash-1.5 \n", - "15031 google/gemini-flash-1.5 \n", - "\n", - "[15032 rows x 18 columns]" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" + "ename": "InvalidStateError", + "evalue": "Result is not set.", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mInvalidStateError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[236], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m llm_info \u001b[38;5;241m=\u001b[39m \u001b[43mtask\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresult\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2\u001b[0m llm_info \u001b[38;5;241m=\u001b[39m [x \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m llm_info \u001b[38;5;28;01mif\u001b[39;00m x \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m]\n\u001b[1;32m 3\u001b[0m df_llm \u001b[38;5;241m=\u001b[39m pd\u001b[38;5;241m.\u001b[39mDataFrame(llm_info)\n", + "\u001b[0;31mInvalidStateError\u001b[0m: Result is not set." + ] } ], "source": [ @@ -1775,7 +831,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 237, "metadata": {}, "outputs": [ { @@ -1826,16 +882,16 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 238, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "(1, 18)" + "(15032, 18)" ] }, - "execution_count": 33, + "execution_count": 238, "metadata": {}, "output_type": "execute_result" } @@ -1846,7 +902,7 @@ }, { "cell_type": "code", - "execution_count": 97, + "execution_count": 239, "metadata": {}, "outputs": [ { @@ -2313,7 +1369,7 @@ "[15032 rows x 18 columns]" ] }, - "execution_count": 97, + "execution_count": 239, "metadata": {}, "output_type": "execute_result" } @@ -2325,7 +1381,7 @@ }, { "cell_type": "code", - "execution_count": 98, + "execution_count": 240, "metadata": {}, "outputs": [ { @@ -2848,7 +1904,7 @@ "[15032 rows x 26 columns]" ] }, - "execution_count": 98, + "execution_count": 240, "metadata": {}, "output_type": "execute_result" } @@ -2872,14 +1928,16 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "from rrational.transform import join_uniq, chain_lists, format_flair, c2md, collapsibe, urls2a,url2a, unique_elements " + ] }, { "cell_type": "code", - "execution_count": 99, + "execution_count": 241, "metadata": {}, "outputs": [ { @@ -3343,19 +2401,12 @@ "[13223 rows x 23 columns]" ] }, - "execution_count": 99, + "execution_count": 241, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "def join_uniq(x: list[str]):\n", - " return \"\\n\".join(set(x))\n", - "\n", - "\n", - "def chain_lists(x: list[list[str]]):\n", - " return [item for sublist in x for item in sublist]\n", - "\n", "# dedup by llm title\n", "df_llm3= (\n", " df_llm2.groupby('title').agg(\n", @@ -3395,92 +2446,18 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 100, - "metadata": {}, - "outputs": [], - "source": [ - "def format_flair(author_flair_text):\n", - " if author_flair_text:\n", - " return f\" {author_flair_text}\"\n", - " return \"\"\n", - "\n", - "import markdown\n", - "def commentmd2html(x: dict) -> str:\n", - " body = markdown.markdown(x['body'])\n", - " ts = pd.to_datetime(x['created_utc'], unit='s').strftime('%Y-%m-%d')\n", - " flair = format_flair(x['author_flair_text'])\n", - " url = prefix + x['permalink']\n", - " s = f\"\"\"

{x.get('author', 'anon')} [{x['score']:+}] {flair} {ts}

\n", - "{body}\n", - "\"\"\"\n", - " # print(s)\n", - " return s\n", - "\n", - "def collapsibe(title, body):\n", - " return f\"\"\"
{title}\n", - "{body}\n", - "
\n", - "\"\"\"\n", - "\n", - "prefix = \"https://reddit.com\"\n", - "def c2md(x):\n", - " return collapsibe(x['id'], commentmd2html(x))\n", - "\n", - "# # QC test\n", - "# x = df3.iloc[0].comments[0]\n", - "# from IPython.display import display, HTML\n", - "# display(HTML(c2md(x)))" - ] - }, - { - "cell_type": "code", - "execution_count": 101, + "execution_count": 243, "metadata": {}, "outputs": [], "source": [ "# First transform the fields for display\n", "d = df3.reset_index().sort_values(\"score\", ascending=False)\n", - "\n", - "\n", - "def url2a(url):\n", - " text = url\n", - " if \"reddit.com/r/rational\" in url:\n", - " text = url.split(\"/\")[-2]\n", - " # text = url.replace('https://reddit.com/r/rational/comments/', '')\n", - "\n", - " return f'{text}'\n", - "\n", - "\n", - "from collections import OrderedDict\n", - "def unique_elements(lst):\n", - " return list(OrderedDict.fromkeys(lst))\n", - "\n", - "def urls2a(urls, sep=None):\n", - " if isinstance(urls, str):\n", - " urls = urls.split(\"\\n\")\n", - "\n", - " # get uniques from list, keep in same order\n", - " urls = unique_elements(urls)\n", - "\n", - " a_els = [url2a(u) for u in urls]\n", - "\n", - " # now make into a html list\n", - " if sep is None:\n", - " return \"\"\n", - " else:\n", - " return sep.join(a_els)\n" + "\n" ] }, { "cell_type": "code", - "execution_count": 213, + "execution_count": 244, "metadata": {}, "outputs": [], "source": [ @@ -3494,13 +2471,13 @@ }, { "cell_type": "code", - "execution_count": 192, + "execution_count": 245, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "cd40d4abe1254756bce6dde1a82c797e", + "model_id": "1f3efd91b1004ba5b4806432a7d79d61", "version_major": 2, "version_minor": 0 }, @@ -3542,11 +2519,13 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "from collections import OrderedDict" + ] }, { "cell_type": "code", - "execution_count": 193, + "execution_count": 246, "metadata": {}, "outputs": [ { @@ -3602,16 +2581,7 @@ }, { "cell_type": "code", - "execution_count": 194, - "metadata": {}, - "outputs": [], - "source": [ - "# d.info()" - ] - }, - { - "cell_type": "code", - "execution_count": 195, + "execution_count": 248, "metadata": {}, "outputs": [ { @@ -3644,7 +2614,7 @@ " 'n_comments']" ] }, - "execution_count": 195, + "execution_count": 248, "metadata": {}, "output_type": "execute_result" } @@ -3667,118 +2637,11 @@ }, { "cell_type": "code", - "execution_count": 196, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'H4sIAFvRcGcC/+y9C5PjtrEo/Fd0N2UnuRnNiqSe+bJxrb3rtRO/4t3EJydzigWSIAmJJCiC1OvXf90AqNdQEqUhbZ2q6/LOYCQ8'" - ] - }, - "execution_count": 196, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# because there is a lot of uncompressed text data, we can compress it to gzip and store as base64. This isn't perfect but it's simple and works with a single static page\n", - "from io import BytesIO\n", - "import base64\n", - "import gzip\n", - "\n", - "data = d.to_json(orient=\"values\").encode()\n", - "buf = BytesIO()\n", - "compressGzip = gzip.GzipFile(fileobj=buf, mode=\"wb\")\n", - "compressGzip.write(data)\n", - "compressGzip.close()\n", - "buf.seek(0)\n", - "b64str = base64.b64encode(buf.getvalue()).decode()\n", - "b64str[:100]" - ] - }, - { - "cell_type": "code", - "execution_count": 220, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'[{\"title\": \"Title\", \"visible\": true, \"searchable\": true, \"footer\": \"Title\", \"name\": \"Title2\"}, {\"title\": \"\\\\u2b06\\\\ufe0f\", \"visible\": true, \"searchable\": true, \"footer\": \"\\\\u2b06\\\\ufe0f\", \"name\": \"\\\\u2b06\\\\ufe0f2\"}, {\"title\": \"Comments\", \"visible\": false, \"searchable\": false, \"footer\": \"Comments\", \"name\": \"Comments2\"}, {\"title\": \"\\\\u2b50Qual\", \"visible\": true, \"searchable\": true, \"footer\": \"\\\\u2b50Qual\", \"name\": \"\\\\u2b50Qual2\"}, {\"title\": \"\\\\u2b50Rat\", \"visible\": true, \"searchable\": true, \"footer\": \"\\\\u2b50Rat\", \"name\": \"\\\\u2b50Rat2\"}, {\"title\": \"\\\\u2b50Writ\", \"visible\": false, \"searchable\": false, \"footer\": \"\\\\u2b50Writ\", \"name\": \"\\\\u2b50Writ2\"}, {\"title\": \"\\\\u2b50Plot\", \"visible\": false, \"searchable\": false, \"footer\": \"\\\\u2b50Plot\", \"name\": \"\\\\u2b50Plot2\"}, {\"title\": \"\\\\u2b50Char\", \"visible\": false, \"searchable\": false, \"footer\": \"\\\\u2b50Char\", \"name\": \"\\\\u2b50Char2\"}, {\"title\": \"\\\\u2b50World\", \"visible\": false, \"searchable\": false, \"footer\": \"\\\\u2b50World\", \"name\": \"\\\\u2b50World2\"}, {\"title\": \"Tags\", \"visible\": true, \"searchable\": true, \"footer\": \"Tags\", \"name\": \"Tags2\"}, {\"title\": \"First Link\", \"visible\": false, \"searchable\": false, \"footer\": \"First Link\", \"name\": \"First Link2\"}, {\"title\": \"Last Link\", \"visible\": false, \"searchable\": false, \"footer\": \"Last Link\", \"name\": \"Last Link2\"}, {\"title\": \"Links\", \"visible\": false, \"searchable\": false, \"footer\": \"Links\", \"name\": \"Links2\"}, {\"title\": \"URLs\", \"visible\": true, \"searchable\": true, \"footer\": \"URLs\", \"name\": \"URLs2\"}, {\"title\": \"Reviews Summary\", \"visible\": false, \"searchable\": false, \"footer\": \"Reviews Summary\", \"name\": \"Reviews Summary2\"}, {\"title\": \"Threads\", \"visible\": true, \"searchable\": true, \"footer\": \"Threads\", \"name\": \"Threads2\"}, {\"title\": \"Comments\", \"visible\": false, \"searchable\": false, \"footer\": \"Comments\", \"name\": \"Comments2\"}, {\"title\": \"Similar\", \"visible\": true, \"searchable\": true, \"footer\": \"Similar\", \"name\": \"Similar2\"}, {\"title\": \"Description\", \"visible\": true, \"searchable\": true, \"footer\": \"Description\", \"name\": \"Description2\"}, {\"title\": \"Recommendations\", \"visible\": false, \"searchable\": false, \"footer\": \"Recommendations\", \"name\": \"Recommendations2\"}, {\"title\": \"Disrecommendations\", \"visible\": false, \"searchable\": false, \"footer\": \"Disrecommendations\", \"name\": \"Disrecommendations2\"}, {\"title\": \"Why\", \"visible\": true, \"searchable\": true, \"footer\": \"Why\", \"name\": \"Why2\"}, {\"title\": \"Reviews\", \"visible\": false, \"searchable\": false, \"footer\": \"Reviews\", \"name\": \"Reviews2\"}]'" - ] - }, - "execution_count": 220, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# put into the html template\n", - "import jinja2\n", - "\n", - "environment = jinja2.Environment()\n", - "template = open(\"../index.jinja2.html\").read()\n", - "template = environment.from_string(template)\n", - "\n", - "\n", - "# data = d.to_json(orient=\"values\")\n", - "\n", - "\n", - "columns = [\n", - " {\n", - " \"title\": c,\n", - " \"visible\": c not in hidden2,\n", - " \"searchable\": c not in hidden2,\n", - " \"footer\": c,\n", - " \"name\": c+\"2\",\n", - " }\n", - " for c in d.columns\n", - "]\n", - "columns = json.dumps(columns)\n", - "\n", - "\n", - "html = template.render(\n", - " data=b64str,\n", - " columns=columns,\n", - ")\n", - "html_out = Path(\"../index.html\").resolve()\n", - "open(html_out, \"w\").write(html)\n", - "columns" - ] - }, - { - "cell_type": "code", - "execution_count": 221, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "View the page /media/wassname/SGIronWolf/projects5/rrational/index.html" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from IPython.display import HTML, display\n", - "\n", - "htmla = f'View the page {html_out}'\n", - "display(HTML(htmla))" - ] - }, - { - "cell_type": "code", - "execution_count": 148, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ - "df3.to_parquet(\"../outputs/df_links5.parquet\")" + "from rrational.export import export_df_2_html\n" ] }, { @@ -3786,7 +2649,85 @@ "execution_count": null, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "\n", + "export_df_2_html(\n", + " template=\"../index.jinja2.html\",\n", + " df=d,\n", + " columns=hidden2,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# from IPython.display import HTML, display\n", + "\n", + "# htmla = f'View the page {html_out}'\n", + "# display(HTML(htmla))" + ] + }, + { + "cell_type": "code", + "execution_count": 254, + "metadata": {}, + "outputs": [], + "source": [ + "df_llm3.to_parquet(\"../outputs/df_links5.parquet\")" + ] + }, + { + "cell_type": "code", + "execution_count": 255, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['title', 'score', 'n_links', 'n_comments', 'comments', 'thread_urls',\n", + " 'first_link_utc', 'last_link_utc', 'url', 'description', 'tags',\n", + " 'reviews_quotes', 'reviews_summary', 'reccomendations',\n", + " 'disrecommendations', 'why', 'if_you_liked_x_you_will_like_this',\n", + " 'rating_quality', 'rating_rationality', 'rating_writing', 'rating_plot',\n", + " 'rating_character', 'rating_worldbuilding'],\n", + " dtype='object')" + ] + }, + "execution_count": 255, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_llm3.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 256, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['Title', '⬆️', 'Comments', '⭐Qual', '⭐Rat', '⭐Writ', '⭐Plot', '⭐Char',\n", + " '⭐World', 'Tags', 'First Link', 'Last Link', 'Links', 'URLs',\n", + " 'Reviews Summary', 'Threads', 'Comments', 'Similar', 'Description',\n", + " 'Recommendations', 'Disrecommendations', 'Why', 'Reviews'],\n", + " dtype='object')" + ] + }, + "execution_count": 256, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d.columns" + ] }, { "cell_type": "code", diff --git a/nbs/sceatch.ipynb b/nbs/sceatch.ipynb new file mode 100644 index 00000000..f70d4df9 --- /dev/null +++ b/nbs/sceatch.ipynb @@ -0,0 +1,1703 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%reload_ext autoreload\n", + "%autoreload 2" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
titlescoren_linksn_commentscommentsthread_urlsfirst_link_utclast_link_utcurldescription...reccomendationsdisrecommendationswhyif_you_liked_x_you_will_like_thisrating_qualityrating_rationalityrating_writingrating_plotrating_characterrating_worldbuilding
0Worth the Candle5458296296[{'author_flair_text': 'Self-Appointed Court S...[https://reddit.com/r/rational/comments/7228po...2015-09-26 06:59:232024-04-17 19:03:01[https://archiveofourown.org/works/11478249/ch...Worth the Candle is a long, original, complete......Readers frequently praised the story's compell...Some readers found the sheer length of the wor...Readers of r/rational would likely enjoy Worth...[Mother of Learning, HPMOR, Worm, Erfworld, Lu...9.07.08.58.58.09.0
1Mother of Learning1834174174[{'author_flair_text': 'Utopian Smut Peddler',...[https://reddit.com/r/rational/comments/k8i7jg...2014-07-26 08:21:122024-05-21 07:04:42[https://www.fictionpress.com/s/2961893/1/Moth...Mother of Learning is a web serial about Zoria......Readers praise its consistent internal logic, ...Some readers find the writing style to be roug...Readers of r/rational will appreciate the stor...[Time Braid, HPMOR, Worm]9.07.57.09.08.59.0
2Alexander Wales - The Metropolitan Man, Shadow...14082222[{'author_flair_text': 'Time flies like an arr...[https://reddit.com/r/rational/comments/galt0r...2015-04-18 18:13:472021-04-29 20:00:04[https://www.patreon.com/alexanderwales]Alexander Wales's works, including *Shadows of......Readers strongly recommend Alexander Wales's w...Some readers express concerns about the infreq...Readers of r/rational would likely enjoy Alexa...[Brandon Sanderson, Harry Potter, Worm, Mother...9.07.59.09.08.58.0
3A Practical Guide to Evil1321143143[{'author_flair_text': 'Ankh-Morpork City Watc...[https://reddit.com/r/rational/comments/ako900...2016-04-05 18:53:212024-08-09 10:10:21[https://practicalguidetoevil.wordpress.com/, ...A Practical Guide to Evil is a long-running we......Readers praise its well-developed characters, ...Some readers find the frequent cliffhangers ir...Readers of r/rational will likely enjoy this f...[Worm, Shadows of the Limelight]9.57.08.09.09.09.0
4Worm10199696[{'author_flair_text': 'Emergency Mustelid Hol...[https://reddit.com/r/rational/comments/k8i7jg...2014-01-27 02:09:422024-11-22 21:39:11[https://parahumans.wordpress.com/, https://pa...Worm is a long, complete web serial (1.7 milli......Readers recommend Worm for its compelling char...Some find the story too grim, dark, and depres...Readers of r/rational might enjoy Worm for its...[HPMOR, A Practical Guide to Evil, Other Wildb...9.07.08.58.58.09.5
..................................................................
13218Worth the Candle, Chapter 121-122-622[{'author_flair_text': None, 'body': 'It seems...[https://reddit.com/r/rational/comments/9h1454...2018-09-19 02:26:272018-09-19 04:51:09[https://youtu.be/xq1tN9jZI80]In this chapter of the web serial *Worth the C......Readers praise the writing quality, emotional ...Some readers find the emotional intensity and ...Readers of r/rational might appreciate the foc...[]7.58.08.58.07.09.0
13219Heartbreaker-611[{'author_flair_text': 'https://i.imgur.com/OQ...[https://reddit.com/r/rational/comments/48akta...2016-02-29 20:57:082016-02-29 20:57:08[https://parahumans.wordpress.com/2012/01/17/b...Heartbreaker is mentioned only once in the pro......No positive recommendations are given for Hear...The comment referencing Heartbreaker is widely...Heartbreaker is only mentioned in passing as a...[]1.00.00.00.00.00.0
13220Orthogonality Thesis Discussion Summary-822[{'author_flair_text': None, 'body': 'I don't ...[https://reddit.com/r/rational/comments/3vc0si...2015-12-04 18:17:072016-07-11 16:27:30[https://wiki.lesswrong.com/wiki/Orthogonality...The Orthogonality Thesis, a concept from LessW......Users found the discussions engaging for their...Some users found the discussions overly theore...Readers interested in AI alignment, rationalit...[Discussions on Friendly AI, Sequences by Elie...6.09.00.00.07.00.0
13221When Starting School, Younger Children Are Mor...-911[{'author_flair_text': 'Ankh-Morpork City Watc...[https://reddit.com/r/rational/comments/a1t6um...2018-11-30 17:17:492018-11-30 17:17:49[https://news.harvard.edu/gazette/story/2018/1...This Harvard Gazette article discusses a study......The article's mention generated a discussion a...The article itself isn't fiction, generating d...The discussion touches upon themes relevant to...[]0.00.00.00.00.00.0
13222Is There A Replicability Crisis In Psychology?...-911[{'author_flair_text': 'Ankh-Morpork City Watc...[https://reddit.com/r/rational/comments/a1t6um...2018-11-30 17:17:492018-11-30 17:17:49[https://sciencetrends.com/is-there-a-replicab...A Reddit user mentions a science article explo......No recommendations are given for the article i...The article itself isn't fiction, and its ment...Readers interested in the philosophy of scienc...[]0.00.00.00.00.00.0
\n", + "

13223 rows × 23 columns

\n", + "
" + ], + "text/plain": [ + " title score n_links \\\n", + "0 Worth the Candle 5458 296 \n", + "1 Mother of Learning 1834 174 \n", + "2 Alexander Wales - The Metropolitan Man, Shadow... 1408 22 \n", + "3 A Practical Guide to Evil 1321 143 \n", + "4 Worm 1019 96 \n", + "... ... ... ... \n", + "13218 Worth the Candle, Chapter 121-122 -6 2 \n", + "13219 Heartbreaker -6 1 \n", + "13220 Orthogonality Thesis Discussion Summary -8 2 \n", + "13221 When Starting School, Younger Children Are Mor... -9 1 \n", + "13222 Is There A Replicability Crisis In Psychology?... -9 1 \n", + "\n", + " n_comments comments \\\n", + "0 296 [{'author_flair_text': 'Self-Appointed Court S... \n", + "1 174 [{'author_flair_text': 'Utopian Smut Peddler',... \n", + "2 22 [{'author_flair_text': 'Time flies like an arr... \n", + "3 143 [{'author_flair_text': 'Ankh-Morpork City Watc... \n", + "4 96 [{'author_flair_text': 'Emergency Mustelid Hol... \n", + "... ... ... \n", + "13218 2 [{'author_flair_text': None, 'body': 'It seems... \n", + "13219 1 [{'author_flair_text': 'https://i.imgur.com/OQ... \n", + "13220 2 [{'author_flair_text': None, 'body': 'I don't ... \n", + "13221 1 [{'author_flair_text': 'Ankh-Morpork City Watc... \n", + "13222 1 [{'author_flair_text': 'Ankh-Morpork City Watc... \n", + "\n", + " thread_urls first_link_utc \\\n", + "0 [https://reddit.com/r/rational/comments/7228po... 2015-09-26 06:59:23 \n", + "1 [https://reddit.com/r/rational/comments/k8i7jg... 2014-07-26 08:21:12 \n", + "2 [https://reddit.com/r/rational/comments/galt0r... 2015-04-18 18:13:47 \n", + "3 [https://reddit.com/r/rational/comments/ako900... 2016-04-05 18:53:21 \n", + "4 [https://reddit.com/r/rational/comments/k8i7jg... 2014-01-27 02:09:42 \n", + "... ... ... \n", + "13218 [https://reddit.com/r/rational/comments/9h1454... 2018-09-19 02:26:27 \n", + "13219 [https://reddit.com/r/rational/comments/48akta... 2016-02-29 20:57:08 \n", + "13220 [https://reddit.com/r/rational/comments/3vc0si... 2015-12-04 18:17:07 \n", + "13221 [https://reddit.com/r/rational/comments/a1t6um... 2018-11-30 17:17:49 \n", + "13222 [https://reddit.com/r/rational/comments/a1t6um... 2018-11-30 17:17:49 \n", + "\n", + " last_link_utc url \\\n", + "0 2024-04-17 19:03:01 [https://archiveofourown.org/works/11478249/ch... \n", + "1 2024-05-21 07:04:42 [https://www.fictionpress.com/s/2961893/1/Moth... \n", + "2 2021-04-29 20:00:04 [https://www.patreon.com/alexanderwales] \n", + "3 2024-08-09 10:10:21 [https://practicalguidetoevil.wordpress.com/, ... \n", + "4 2024-11-22 21:39:11 [https://parahumans.wordpress.com/, https://pa... \n", + "... ... ... \n", + "13218 2018-09-19 04:51:09 [https://youtu.be/xq1tN9jZI80] \n", + "13219 2016-02-29 20:57:08 [https://parahumans.wordpress.com/2012/01/17/b... \n", + "13220 2016-07-11 16:27:30 [https://wiki.lesswrong.com/wiki/Orthogonality... \n", + "13221 2018-11-30 17:17:49 [https://news.harvard.edu/gazette/story/2018/1... \n", + "13222 2018-11-30 17:17:49 [https://sciencetrends.com/is-there-a-replicab... \n", + "\n", + " description ... \\\n", + "0 Worth the Candle is a long, original, complete... ... \n", + "1 Mother of Learning is a web serial about Zoria... ... \n", + "2 Alexander Wales's works, including *Shadows of... ... \n", + "3 A Practical Guide to Evil is a long-running we... ... \n", + "4 Worm is a long, complete web serial (1.7 milli... ... \n", + "... ... ... \n", + "13218 In this chapter of the web serial *Worth the C... ... \n", + "13219 Heartbreaker is mentioned only once in the pro... ... \n", + "13220 The Orthogonality Thesis, a concept from LessW... ... \n", + "13221 This Harvard Gazette article discusses a study... ... \n", + "13222 A Reddit user mentions a science article explo... ... \n", + "\n", + " reccomendations \\\n", + "0 Readers frequently praised the story's compell... \n", + "1 Readers praise its consistent internal logic, ... \n", + "2 Readers strongly recommend Alexander Wales's w... \n", + "3 Readers praise its well-developed characters, ... \n", + "4 Readers recommend Worm for its compelling char... \n", + "... ... \n", + "13218 Readers praise the writing quality, emotional ... \n", + "13219 No positive recommendations are given for Hear... \n", + "13220 Users found the discussions engaging for their... \n", + "13221 The article's mention generated a discussion a... \n", + "13222 No recommendations are given for the article i... \n", + "\n", + " disrecommendations \\\n", + "0 Some readers found the sheer length of the wor... \n", + "1 Some readers find the writing style to be roug... \n", + "2 Some readers express concerns about the infreq... \n", + "3 Some readers find the frequent cliffhangers ir... \n", + "4 Some find the story too grim, dark, and depres... \n", + "... ... \n", + "13218 Some readers find the emotional intensity and ... \n", + "13219 The comment referencing Heartbreaker is widely... \n", + "13220 Some users found the discussions overly theore... \n", + "13221 The article itself isn't fiction, generating d... \n", + "13222 The article itself isn't fiction, and its ment... \n", + "\n", + " why \\\n", + "0 Readers of r/rational would likely enjoy Worth... \n", + "1 Readers of r/rational will appreciate the stor... \n", + "2 Readers of r/rational would likely enjoy Alexa... \n", + "3 Readers of r/rational will likely enjoy this f... \n", + "4 Readers of r/rational might enjoy Worm for its... \n", + "... ... \n", + "13218 Readers of r/rational might appreciate the foc... \n", + "13219 Heartbreaker is only mentioned in passing as a... \n", + "13220 Readers interested in AI alignment, rationalit... \n", + "13221 The discussion touches upon themes relevant to... \n", + "13222 Readers interested in the philosophy of scienc... \n", + "\n", + " if_you_liked_x_you_will_like_this rating_quality \\\n", + "0 [Mother of Learning, HPMOR, Worm, Erfworld, Lu... 9.0 \n", + "1 [Time Braid, HPMOR, Worm] 9.0 \n", + "2 [Brandon Sanderson, Harry Potter, Worm, Mother... 9.0 \n", + "3 [Worm, Shadows of the Limelight] 9.5 \n", + "4 [HPMOR, A Practical Guide to Evil, Other Wildb... 9.0 \n", + "... ... ... \n", + "13218 [] 7.5 \n", + "13219 [] 1.0 \n", + "13220 [Discussions on Friendly AI, Sequences by Elie... 6.0 \n", + "13221 [] 0.0 \n", + "13222 [] 0.0 \n", + "\n", + " rating_rationality rating_writing rating_plot rating_character \\\n", + "0 7.0 8.5 8.5 8.0 \n", + "1 7.5 7.0 9.0 8.5 \n", + "2 7.5 9.0 9.0 8.5 \n", + "3 7.0 8.0 9.0 9.0 \n", + "4 7.0 8.5 8.5 8.0 \n", + "... ... ... ... ... \n", + "13218 8.0 8.5 8.0 7.0 \n", + "13219 0.0 0.0 0.0 0.0 \n", + "13220 9.0 0.0 0.0 7.0 \n", + "13221 0.0 0.0 0.0 0.0 \n", + "13222 0.0 0.0 0.0 0.0 \n", + "\n", + " rating_worldbuilding \n", + "0 9.0 \n", + "1 9.0 \n", + "2 8.0 \n", + "3 9.0 \n", + "4 9.5 \n", + "... ... \n", + "13218 9.0 \n", + "13219 0.0 \n", + "13220 0.0 \n", + "13221 0.0 \n", + "13222 0.0 \n", + "\n", + "[13223 rows x 23 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "df = pd.read_parquet('../outputs/df_links5.parquet')\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total: n= 13223\n", + "Filtered: n=11549 from `score > 1`\n", + "Filtered: n=8811 from `rating_character > 1`\n", + "Filtered: n=8557 from `rating_plot > 1`\n", + "Filtered: n=8506 from `rating_rationality > 1`\n" + ] + } + ], + "source": [ + "# custom search\n", + "masks = [\n", + " 'score > 1',\n", + " 'rating_character > 1',\n", + " 'rating_plot > 1',\n", + " 'rating_rationality > 1',\n", + "]\n", + "\n", + "print('Total: n=', len(df))\n", + "for m in masks:\n", + " df = df.query(m)\n", + " print(f'Filtered: n={len(df)} from `{m}`')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
titlescoren_linksn_commentscommentsthread_urlsfirst_link_utclast_link_utcurldescription...reccomendationsdisrecommendationswhyif_you_liked_x_you_will_like_thisrating_qualityrating_rationalityrating_writingrating_plotrating_characterrating_worldbuilding
0Worth the Candle5458296296[{'author_flair_text': 'Self-Appointed Court S...[https://reddit.com/r/rational/comments/7228po...2015-09-26 06:59:232024-04-17 19:03:01[https://archiveofourown.org/works/11478249/ch...Worth the Candle is a long, original, complete......Readers frequently praised the story's compell...Some readers found the sheer length of the wor...Readers of r/rational would likely enjoy Worth...[Mother of Learning, HPMOR, Worm, Erfworld, Lu...9.07.08.58.58.09.0
1Mother of Learning1834174174[{'author_flair_text': 'Utopian Smut Peddler',...[https://reddit.com/r/rational/comments/k8i7jg...2014-07-26 08:21:122024-05-21 07:04:42[https://www.fictionpress.com/s/2961893/1/Moth...Mother of Learning is a web serial about Zoria......Readers praise its consistent internal logic, ...Some readers find the writing style to be roug...Readers of r/rational will appreciate the stor...[Time Braid, HPMOR, Worm]9.07.57.09.08.59.0
2Alexander Wales - The Metropolitan Man, Shadow...14082222[{'author_flair_text': 'Time flies like an arr...[https://reddit.com/r/rational/comments/galt0r...2015-04-18 18:13:472021-04-29 20:00:04[https://www.patreon.com/alexanderwales]Alexander Wales's works, including *Shadows of......Readers strongly recommend Alexander Wales's w...Some readers express concerns about the infreq...Readers of r/rational would likely enjoy Alexa...[Brandon Sanderson, Harry Potter, Worm, Mother...9.07.59.09.08.58.0
3A Practical Guide to Evil1321143143[{'author_flair_text': 'Ankh-Morpork City Watc...[https://reddit.com/r/rational/comments/ako900...2016-04-05 18:53:212024-08-09 10:10:21[https://practicalguidetoevil.wordpress.com/, ...A Practical Guide to Evil is a long-running we......Readers praise its well-developed characters, ...Some readers find the frequent cliffhangers ir...Readers of r/rational will likely enjoy this f...[Worm, Shadows of the Limelight]9.57.08.09.09.09.0
4Worm10199696[{'author_flair_text': 'Emergency Mustelid Hol...[https://reddit.com/r/rational/comments/k8i7jg...2014-01-27 02:09:422024-11-22 21:39:11[https://parahumans.wordpress.com/, https://pa...Worm is a long, complete web serial (1.7 milli......Readers recommend Worm for its compelling char...Some find the story too grim, dark, and depres...Readers of r/rational might enjoy Worm for its...[HPMOR, A Practical Guide to Evil, Other Wildb...9.07.08.58.58.09.5
..................................................................
11537Schild's Ladder211[{'author_flair_text': None, 'body': 'One of G...[https://reddit.com/r/rational/comments/khj3a6...2020-12-22 00:53:172020-12-22 00:53:17[https://www.goodreads.com/book/show/156780.Sc...Schild's Ladder is a long-form science fiction......Readers recommend Schild's Ladder for its expl...No specific negative reviews found in the data.Readers interested in hard sci-fi, transhumani...[]7.58.07.07.07.08.0
11539Karkadinn211[{'author_flair_text': 'My arch-enemy is entro...[https://reddit.com/r/rational/comments/3zkruy...2016-01-07 22:26:382016-01-07 22:26:38[https://www.fanfiction.net/u/1092271/Karkadinn]Karkadinn is a fanfiction author known for wor......Readers praise Karkadinn's stories for their b...Some stories are incomplete or no longer being...Readers of r/rational might enjoy Karkadinn's ...[]8.27.08.08.58.07.5
11544Inevitable211[{'author_flair_text': 'seer of seers, prognos...[https://reddit.com/r/rational/comments/biqik4...2019-04-29 18:19:392019-04-29 18:19:39[https://forums.spacebattles.com/threads/wormv...Inevitable is a Worm oneshot fanfiction where ......Readers recommend Inevitable for its in-depth ...Some readers find the revised ending unsatisfa...Readers of r/rational interested in Worm fanfi...[Worm]8.59.08.08.07.09.0
11545Just an Assistant211[{'author_flair_text': None, 'body': 'For fict...[https://reddit.com/r/rational/comments/ktpyd9...2021-01-11 15:40:092021-01-11 15:40:09[https://www.fimfiction.net/story/224797/just-...In this My Little Pony fanfic, Princess Luna a......Readers recommend this fanfic for its interest...Some readers find the topic of slavery inheren...Readers interested in morally gray characters,...[Works exploring the justifications of slavery...7.58.08.06.07.07.0
11548Humanity Fuck Yeah Thread (The Second, The Sec...211[{'author_flair_text': None, 'body': 'I endors...[https://reddit.com/r/rational/comments/23uwyc...2014-04-25 20:07:052014-04-25 20:07:05[http://forums.spacebattles.com/threads/humani...This entry summarizes comments from r/rational......The fic is praised by comparison to another wo...No direct negative feedback on the main thread...Readers might enjoy this if they are looking f...[Overlord game, Zero no Tsukaima, Worm (but le...7.06.08.06.07.06.0
\n", + "

8506 rows × 23 columns

\n", + "
" + ], + "text/plain": [ + " title score n_links \\\n", + "0 Worth the Candle 5458 296 \n", + "1 Mother of Learning 1834 174 \n", + "2 Alexander Wales - The Metropolitan Man, Shadow... 1408 22 \n", + "3 A Practical Guide to Evil 1321 143 \n", + "4 Worm 1019 96 \n", + "... ... ... ... \n", + "11537 Schild's Ladder 2 1 \n", + "11539 Karkadinn 2 1 \n", + "11544 Inevitable 2 1 \n", + "11545 Just an Assistant 2 1 \n", + "11548 Humanity Fuck Yeah Thread (The Second, The Sec... 2 1 \n", + "\n", + " n_comments comments \\\n", + "0 296 [{'author_flair_text': 'Self-Appointed Court S... \n", + "1 174 [{'author_flair_text': 'Utopian Smut Peddler',... \n", + "2 22 [{'author_flair_text': 'Time flies like an arr... \n", + "3 143 [{'author_flair_text': 'Ankh-Morpork City Watc... \n", + "4 96 [{'author_flair_text': 'Emergency Mustelid Hol... \n", + "... ... ... \n", + "11537 1 [{'author_flair_text': None, 'body': 'One of G... \n", + "11539 1 [{'author_flair_text': 'My arch-enemy is entro... \n", + "11544 1 [{'author_flair_text': 'seer of seers, prognos... \n", + "11545 1 [{'author_flair_text': None, 'body': 'For fict... \n", + "11548 1 [{'author_flair_text': None, 'body': 'I endors... \n", + "\n", + " thread_urls first_link_utc \\\n", + "0 [https://reddit.com/r/rational/comments/7228po... 2015-09-26 06:59:23 \n", + "1 [https://reddit.com/r/rational/comments/k8i7jg... 2014-07-26 08:21:12 \n", + "2 [https://reddit.com/r/rational/comments/galt0r... 2015-04-18 18:13:47 \n", + "3 [https://reddit.com/r/rational/comments/ako900... 2016-04-05 18:53:21 \n", + "4 [https://reddit.com/r/rational/comments/k8i7jg... 2014-01-27 02:09:42 \n", + "... ... ... \n", + "11537 [https://reddit.com/r/rational/comments/khj3a6... 2020-12-22 00:53:17 \n", + "11539 [https://reddit.com/r/rational/comments/3zkruy... 2016-01-07 22:26:38 \n", + "11544 [https://reddit.com/r/rational/comments/biqik4... 2019-04-29 18:19:39 \n", + "11545 [https://reddit.com/r/rational/comments/ktpyd9... 2021-01-11 15:40:09 \n", + "11548 [https://reddit.com/r/rational/comments/23uwyc... 2014-04-25 20:07:05 \n", + "\n", + " last_link_utc url \\\n", + "0 2024-04-17 19:03:01 [https://archiveofourown.org/works/11478249/ch... \n", + "1 2024-05-21 07:04:42 [https://www.fictionpress.com/s/2961893/1/Moth... \n", + "2 2021-04-29 20:00:04 [https://www.patreon.com/alexanderwales] \n", + "3 2024-08-09 10:10:21 [https://practicalguidetoevil.wordpress.com/, ... \n", + "4 2024-11-22 21:39:11 [https://parahumans.wordpress.com/, https://pa... \n", + "... ... ... \n", + "11537 2020-12-22 00:53:17 [https://www.goodreads.com/book/show/156780.Sc... \n", + "11539 2016-01-07 22:26:38 [https://www.fanfiction.net/u/1092271/Karkadinn] \n", + "11544 2019-04-29 18:19:39 [https://forums.spacebattles.com/threads/wormv... \n", + "11545 2021-01-11 15:40:09 [https://www.fimfiction.net/story/224797/just-... \n", + "11548 2014-04-25 20:07:05 [http://forums.spacebattles.com/threads/humani... \n", + "\n", + " description ... \\\n", + "0 Worth the Candle is a long, original, complete... ... \n", + "1 Mother of Learning is a web serial about Zoria... ... \n", + "2 Alexander Wales's works, including *Shadows of... ... \n", + "3 A Practical Guide to Evil is a long-running we... ... \n", + "4 Worm is a long, complete web serial (1.7 milli... ... \n", + "... ... ... \n", + "11537 Schild's Ladder is a long-form science fiction... ... \n", + "11539 Karkadinn is a fanfiction author known for wor... ... \n", + "11544 Inevitable is a Worm oneshot fanfiction where ... ... \n", + "11545 In this My Little Pony fanfic, Princess Luna a... ... \n", + "11548 This entry summarizes comments from r/rational... ... \n", + "\n", + " reccomendations \\\n", + "0 Readers frequently praised the story's compell... \n", + "1 Readers praise its consistent internal logic, ... \n", + "2 Readers strongly recommend Alexander Wales's w... \n", + "3 Readers praise its well-developed characters, ... \n", + "4 Readers recommend Worm for its compelling char... \n", + "... ... \n", + "11537 Readers recommend Schild's Ladder for its expl... \n", + "11539 Readers praise Karkadinn's stories for their b... \n", + "11544 Readers recommend Inevitable for its in-depth ... \n", + "11545 Readers recommend this fanfic for its interest... \n", + "11548 The fic is praised by comparison to another wo... \n", + "\n", + " disrecommendations \\\n", + "0 Some readers found the sheer length of the wor... \n", + "1 Some readers find the writing style to be roug... \n", + "2 Some readers express concerns about the infreq... \n", + "3 Some readers find the frequent cliffhangers ir... \n", + "4 Some find the story too grim, dark, and depres... \n", + "... ... \n", + "11537 No specific negative reviews found in the data. \n", + "11539 Some stories are incomplete or no longer being... \n", + "11544 Some readers find the revised ending unsatisfa... \n", + "11545 Some readers find the topic of slavery inheren... \n", + "11548 No direct negative feedback on the main thread... \n", + "\n", + " why \\\n", + "0 Readers of r/rational would likely enjoy Worth... \n", + "1 Readers of r/rational will appreciate the stor... \n", + "2 Readers of r/rational would likely enjoy Alexa... \n", + "3 Readers of r/rational will likely enjoy this f... \n", + "4 Readers of r/rational might enjoy Worm for its... \n", + "... ... \n", + "11537 Readers interested in hard sci-fi, transhumani... \n", + "11539 Readers of r/rational might enjoy Karkadinn's ... \n", + "11544 Readers of r/rational interested in Worm fanfi... \n", + "11545 Readers interested in morally gray characters,... \n", + "11548 Readers might enjoy this if they are looking f... \n", + "\n", + " if_you_liked_x_you_will_like_this rating_quality \\\n", + "0 [Mother of Learning, HPMOR, Worm, Erfworld, Lu... 9.0 \n", + "1 [Time Braid, HPMOR, Worm] 9.0 \n", + "2 [Brandon Sanderson, Harry Potter, Worm, Mother... 9.0 \n", + "3 [Worm, Shadows of the Limelight] 9.5 \n", + "4 [HPMOR, A Practical Guide to Evil, Other Wildb... 9.0 \n", + "... ... ... \n", + "11537 [] 7.5 \n", + "11539 [] 8.2 \n", + "11544 [Worm] 8.5 \n", + "11545 [Works exploring the justifications of slavery... 7.5 \n", + "11548 [Overlord game, Zero no Tsukaima, Worm (but le... 7.0 \n", + "\n", + " rating_rationality rating_writing rating_plot rating_character \\\n", + "0 7.0 8.5 8.5 8.0 \n", + "1 7.5 7.0 9.0 8.5 \n", + "2 7.5 9.0 9.0 8.5 \n", + "3 7.0 8.0 9.0 9.0 \n", + "4 7.0 8.5 8.5 8.0 \n", + "... ... ... ... ... \n", + "11537 8.0 7.0 7.0 7.0 \n", + "11539 7.0 8.0 8.5 8.0 \n", + "11544 9.0 8.0 8.0 7.0 \n", + "11545 8.0 8.0 6.0 7.0 \n", + "11548 6.0 8.0 6.0 7.0 \n", + "\n", + " rating_worldbuilding \n", + "0 9.0 \n", + "1 9.0 \n", + "2 8.0 \n", + "3 9.0 \n", + "4 9.5 \n", + "... ... \n", + "11537 8.0 \n", + "11539 7.5 \n", + "11544 9.0 \n", + "11545 7.0 \n", + "11548 6.0 \n", + "\n", + "[8506 rows x 23 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
titlescoren_linksn_commentscommentsthread_urlsfirst_link_utclast_link_utcurldescription...reccomendationsdisrecommendationswhyif_you_liked_x_you_will_like_thisrating_qualityrating_rationalityrating_writingrating_plotrating_characterrating_worldbuilding
0Worth the Candle5458296296[{'author_flair_text': 'Self-Appointed Court S...[https://reddit.com/r/rational/comments/7228po...2015-09-26 06:59:232024-04-17 19:03:01[https://archiveofourown.org/works/11478249/ch...Worth the Candle is a long, original, complete......Readers frequently praised the story's compell...Some readers found the sheer length of the wor...Readers of r/rational would likely enjoy Worth...[Mother of Learning, HPMOR, Worm, Erfworld, Lu...9.07.08.58.58.09.0
1Mother of Learning1834174174[{'author_flair_text': 'Utopian Smut Peddler',...[https://reddit.com/r/rational/comments/k8i7jg...2014-07-26 08:21:122024-05-21 07:04:42[https://www.fictionpress.com/s/2961893/1/Moth...Mother of Learning is a web serial about Zoria......Readers praise its consistent internal logic, ...Some readers find the writing style to be roug...Readers of r/rational will appreciate the stor...[Time Braid, HPMOR, Worm]9.07.57.09.08.59.0
16Delve4413939[{'author_flair_text': None, 'body': 'Can I ju...[https://reddit.com/r/rational/comments/giq6yv...2019-07-05 15:23:192024-07-29 16:14:14[https://www.royalroad.com/fiction/25225/delve...Delve is a LitRPG isekai web serial where the ......Readers who enjoy LitRPGs with a strong emphas...Many readers find the pacing incredibly slow, ...Readers of r/rational might enjoy Delve for it...[Progression Fantasy, LitRPG with meaningful m...6.07.05.06.06.07.0
18Only Villains Do That4282020[{'author_flair_text': 'Path to Victory', 'bod...[https://reddit.com/r/rational/comments/mu17nk...2021-04-19 16:42:212024-09-09 18:18:36[https://www.royalroad.com/fiction/40182/only-...Only Villains Do That is a web serial that fol......Readers praise the story's subversion of iseka...Some readers find the protagonist's misanthrop...Readers of r/rational might enjoy Only Villain...[The Gods are Bastards, Worth the Candle, Over...7.86.08.57.07.58.0
23Ar'Kendrithyst4043131[{'author_flair_text': None, 'body': 'I think ...[https://reddit.com/r/rational/comments/mao94s...2020-01-13 22:21:342024-11-18 15:07:29[https://www.royalroad.com/fiction/26727/arken...LitRPG isekai featuring a middle-aged pacifist......Readers praise the well-developed world and in...Early chapters feature a naive, impulsive prot...Readers of r/rational might enjoy Ar'Kendrithy...[Delve, Mother of Learning, System Apocalypse]7.57.08.06.07.09.0
..................................................................
11110Synergy211[{'author_flair_text': None, 'body': 'Some stu...[https://reddit.com/r/rational/comments/kls3ju...2021-01-04 15:33:082021-01-04 15:33:08[https://www.royalroad.com/fiction/35374/synergy]Synergy is a LitRPG web serial on RoyalRoad. T......Readers appreciated the focus on the importanc...Some readers found the premise unremarkable or...Readers of r/Rational might enjoy Synergy if t...[To Play With Magic]7.06.06.56.56.06.0
11205The Acts of Androkles211[{'author_flair_text': None, 'body': 'I love t...[https://reddit.com/r/rational/comments/e8b2i2...2019-12-14 23:52:342019-12-14 23:52:34[https://www.royalroad.com/fiction/25012/the-a...The Acts of Androkles is a RoyalRoad web seria......The story's immersive quality and engaging wri...Some readers found the initial chapters to hav...Readers looking for a well-written and engagin...[]8.06.07.07.57.07.0
11229Polyrhythm Time -- A Bard's Tail222[{'author_flair_text': None, 'body': ' [https:...[https://reddit.com/r/rational/comments/humufy...2020-05-21 01:25:022020-07-27 12:55:28[https://www.royalroad.com/fiction/30483/polyr...Polyrhythm Time is a web serial that deconstru......Readers recommend Polyrhythm Time for its uniq...No significant negative reviews found in the p...Readers of r/rational might enjoy Polyrhythm T...[Peak (nonfiction book on expertise)]7.56.07.07.07.06.0
11428It's Only Another End of the World211[{'author_flair_text': None, 'body': 'There's ...[https://reddit.com/r/rational/comments/je3ans...2020-10-20 21:39:312020-10-20 21:39:31[https://www.royalroad.com/fiction/20453/its-o...It's only another end of the world is a Lovecr......Readers recommended it for its Lovecraftian el...No specific negative reviews were mentioned.Readers interested in Lovecraftian cosmic horr...[Lovecraftian stories, Cosmic horror]7.04.06.07.06.06.0
11483Royaroad Dungeon Tag Fiction Summary211[{'author_flair_text': None, 'body': 'You're n...[https://reddit.com/r/rational/comments/cyq4ku...2019-09-03 21:17:302019-09-03 21:17:30[https://www.royalroad.com/fictions/search?tag...This entry summarizes community recommendation......Readers recommend stories for their engaging p...Several stories are criticized for poor charac...Readers seeking progression fantasy, litRPG, o...[Worm, Island in the Sea of Time, Destroyermen...6.55.06.56.06.07.0
\n", + "

479 rows × 23 columns

\n", + "
" + ], + "text/plain": [ + " title score n_links n_comments \\\n", + "0 Worth the Candle 5458 296 296 \n", + "1 Mother of Learning 1834 174 174 \n", + "16 Delve 441 39 39 \n", + "18 Only Villains Do That 428 20 20 \n", + "23 Ar'Kendrithyst 404 31 31 \n", + "... ... ... ... ... \n", + "11110 Synergy 2 1 1 \n", + "11205 The Acts of Androkles 2 1 1 \n", + "11229 Polyrhythm Time -- A Bard's Tail 2 2 2 \n", + "11428 It's Only Another End of the World 2 1 1 \n", + "11483 Royaroad Dungeon Tag Fiction Summary 2 1 1 \n", + "\n", + " comments \\\n", + "0 [{'author_flair_text': 'Self-Appointed Court S... \n", + "1 [{'author_flair_text': 'Utopian Smut Peddler',... \n", + "16 [{'author_flair_text': None, 'body': 'Can I ju... \n", + "18 [{'author_flair_text': 'Path to Victory', 'bod... \n", + "23 [{'author_flair_text': None, 'body': 'I think ... \n", + "... ... \n", + "11110 [{'author_flair_text': None, 'body': 'Some stu... \n", + "11205 [{'author_flair_text': None, 'body': 'I love t... \n", + "11229 [{'author_flair_text': None, 'body': ' [https:... \n", + "11428 [{'author_flair_text': None, 'body': 'There's ... \n", + "11483 [{'author_flair_text': None, 'body': 'You're n... \n", + "\n", + " thread_urls first_link_utc \\\n", + "0 [https://reddit.com/r/rational/comments/7228po... 2015-09-26 06:59:23 \n", + "1 [https://reddit.com/r/rational/comments/k8i7jg... 2014-07-26 08:21:12 \n", + "16 [https://reddit.com/r/rational/comments/giq6yv... 2019-07-05 15:23:19 \n", + "18 [https://reddit.com/r/rational/comments/mu17nk... 2021-04-19 16:42:21 \n", + "23 [https://reddit.com/r/rational/comments/mao94s... 2020-01-13 22:21:34 \n", + "... ... ... \n", + "11110 [https://reddit.com/r/rational/comments/kls3ju... 2021-01-04 15:33:08 \n", + "11205 [https://reddit.com/r/rational/comments/e8b2i2... 2019-12-14 23:52:34 \n", + "11229 [https://reddit.com/r/rational/comments/humufy... 2020-05-21 01:25:02 \n", + "11428 [https://reddit.com/r/rational/comments/je3ans... 2020-10-20 21:39:31 \n", + "11483 [https://reddit.com/r/rational/comments/cyq4ku... 2019-09-03 21:17:30 \n", + "\n", + " last_link_utc url \\\n", + "0 2024-04-17 19:03:01 [https://archiveofourown.org/works/11478249/ch... \n", + "1 2024-05-21 07:04:42 [https://www.fictionpress.com/s/2961893/1/Moth... \n", + "16 2024-07-29 16:14:14 [https://www.royalroad.com/fiction/25225/delve... \n", + "18 2024-09-09 18:18:36 [https://www.royalroad.com/fiction/40182/only-... \n", + "23 2024-11-18 15:07:29 [https://www.royalroad.com/fiction/26727/arken... \n", + "... ... ... \n", + "11110 2021-01-04 15:33:08 [https://www.royalroad.com/fiction/35374/synergy] \n", + "11205 2019-12-14 23:52:34 [https://www.royalroad.com/fiction/25012/the-a... \n", + "11229 2020-07-27 12:55:28 [https://www.royalroad.com/fiction/30483/polyr... \n", + "11428 2020-10-20 21:39:31 [https://www.royalroad.com/fiction/20453/its-o... \n", + "11483 2019-09-03 21:17:30 [https://www.royalroad.com/fictions/search?tag... \n", + "\n", + " description ... \\\n", + "0 Worth the Candle is a long, original, complete... ... \n", + "1 Mother of Learning is a web serial about Zoria... ... \n", + "16 Delve is a LitRPG isekai web serial where the ... ... \n", + "18 Only Villains Do That is a web serial that fol... ... \n", + "23 LitRPG isekai featuring a middle-aged pacifist... ... \n", + "... ... ... \n", + "11110 Synergy is a LitRPG web serial on RoyalRoad. T... ... \n", + "11205 The Acts of Androkles is a RoyalRoad web seria... ... \n", + "11229 Polyrhythm Time is a web serial that deconstru... ... \n", + "11428 It's only another end of the world is a Lovecr... ... \n", + "11483 This entry summarizes community recommendation... ... \n", + "\n", + " reccomendations \\\n", + "0 Readers frequently praised the story's compell... \n", + "1 Readers praise its consistent internal logic, ... \n", + "16 Readers who enjoy LitRPGs with a strong emphas... \n", + "18 Readers praise the story's subversion of iseka... \n", + "23 Readers praise the well-developed world and in... \n", + "... ... \n", + "11110 Readers appreciated the focus on the importanc... \n", + "11205 The story's immersive quality and engaging wri... \n", + "11229 Readers recommend Polyrhythm Time for its uniq... \n", + "11428 Readers recommended it for its Lovecraftian el... \n", + "11483 Readers recommend stories for their engaging p... \n", + "\n", + " disrecommendations \\\n", + "0 Some readers found the sheer length of the wor... \n", + "1 Some readers find the writing style to be roug... \n", + "16 Many readers find the pacing incredibly slow, ... \n", + "18 Some readers find the protagonist's misanthrop... \n", + "23 Early chapters feature a naive, impulsive prot... \n", + "... ... \n", + "11110 Some readers found the premise unremarkable or... \n", + "11205 Some readers found the initial chapters to hav... \n", + "11229 No significant negative reviews found in the p... \n", + "11428 No specific negative reviews were mentioned. \n", + "11483 Several stories are criticized for poor charac... \n", + "\n", + " why \\\n", + "0 Readers of r/rational would likely enjoy Worth... \n", + "1 Readers of r/rational will appreciate the stor... \n", + "16 Readers of r/rational might enjoy Delve for it... \n", + "18 Readers of r/rational might enjoy Only Villain... \n", + "23 Readers of r/rational might enjoy Ar'Kendrithy... \n", + "... ... \n", + "11110 Readers of r/Rational might enjoy Synergy if t... \n", + "11205 Readers looking for a well-written and engagin... \n", + "11229 Readers of r/rational might enjoy Polyrhythm T... \n", + "11428 Readers interested in Lovecraftian cosmic horr... \n", + "11483 Readers seeking progression fantasy, litRPG, o... \n", + "\n", + " if_you_liked_x_you_will_like_this rating_quality \\\n", + "0 [Mother of Learning, HPMOR, Worm, Erfworld, Lu... 9.0 \n", + "1 [Time Braid, HPMOR, Worm] 9.0 \n", + "16 [Progression Fantasy, LitRPG with meaningful m... 6.0 \n", + "18 [The Gods are Bastards, Worth the Candle, Over... 7.8 \n", + "23 [Delve, Mother of Learning, System Apocalypse] 7.5 \n", + "... ... ... \n", + "11110 [To Play With Magic] 7.0 \n", + "11205 [] 8.0 \n", + "11229 [Peak (nonfiction book on expertise)] 7.5 \n", + "11428 [Lovecraftian stories, Cosmic horror] 7.0 \n", + "11483 [Worm, Island in the Sea of Time, Destroyermen... 6.5 \n", + "\n", + " rating_rationality rating_writing rating_plot rating_character \\\n", + "0 7.0 8.5 8.5 8.0 \n", + "1 7.5 7.0 9.0 8.5 \n", + "16 7.0 5.0 6.0 6.0 \n", + "18 6.0 8.5 7.0 7.5 \n", + "23 7.0 8.0 6.0 7.0 \n", + "... ... ... ... ... \n", + "11110 6.0 6.5 6.5 6.0 \n", + "11205 6.0 7.0 7.5 7.0 \n", + "11229 6.0 7.0 7.0 7.0 \n", + "11428 4.0 6.0 7.0 6.0 \n", + "11483 5.0 6.5 6.0 6.0 \n", + "\n", + " rating_worldbuilding \n", + "0 9.0 \n", + "1 9.0 \n", + "16 7.0 \n", + "18 8.0 \n", + "23 9.0 \n", + "... ... \n", + "11110 6.0 \n", + "11205 7.0 \n", + "11229 6.0 \n", + "11428 6.0 \n", + "11483 7.0 \n", + "\n", + "[479 rows x 23 columns]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# old royalroaddl\n", + "df_rr = df[df['url'].apply(lambda x: any(['royalroad.com' in y for y in x]))]\n", + "df_rr = df_rr.query('first_link_utc < 2023')\n", + "df_rr" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 [web serial, LitRPG, isekai, portal fantasy, o...\n", + "1 [web serial, original fiction, fantasy, time l...\n", + "16 [Web Serial, LitRPG, Isekai, Fantasy, Progress...\n", + "18 [web serial, isekai, dark fantasy, political i...\n", + "23 [web serial, isekai, litrpg, fantasy, progress...\n", + " ... \n", + "11110 [web serial, LitRPG, isekai, progression fanta...\n", + "11205 [web serial, fantasy, well-written, engaging]\n", + "11229 [web serial, fantasy, progression, deconstruct...\n", + "11428 [web serial, complete, scifi, horror, Lovecraf...\n", + "11483 [web serial, litrpg, progression fantasy, isek...\n", + "Name: tags, Length: 479, dtype: object" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_rr.tags" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d=df_rr\n", + "c='tags'\n", + "is_list = d[c].apply(lambda x: isinstance(x, list)).all()\n", + "is_list\n", + "x = d[c].iloc[0]\n", + "import numpy as np\n", + "isinstance(x, (list, tuple, np.ndarray))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['title', 'score', 'n_links', 'n_comments', 'comments', 'thread_urls',\n", + " 'first_link_utc', 'last_link_utc', 'url', 'description', 'tags',\n", + " 'reviews_quotes', 'reviews_summary', 'reccomendations',\n", + " 'disrecommendations', 'why', 'if_you_liked_x_you_will_like_this',\n", + " 'rating_quality', 'rating_rationality', 'rating_writing', 'rating_plot',\n", + " 'rating_character', 'rating_worldbuilding'],\n", + " dtype='object')" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_rr.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [], + "source": [ + "# put the long text columns last\n", + "# 1. get str columns\n", + "str_cols = df_rr.select_dtypes(include='object').columns\n", + "# exclude title, tags\n", + "str_cols = str_cols.difference(['title',])\n", + "# 2. get max length of each column\n", + "max_len = df_rr[str_cols].apply(lambda x: x.str.len().max())\n", + "# 3. sort by max length\n", + "max_len = max_len.sort_values(ascending=False)\n", + "\n", + "# now sort the columns, with original order except for the ones in max_len\n", + "cols = list(df_rr.columns)\n", + "for c in max_len.index:\n", + " cols.remove(c)\n", + "cols = cols + list(max_len.index)\n", + "df_rr = df_rr[cols]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "title, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "score, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "n_links, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "n_comments, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "first_link_utc, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "last_link_utc, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "rating_quality, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "rating_rationality, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "rating_writing, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "rating_plot, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "rating_character, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "rating_worldbuilding, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "description, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "tags, is_list=True, is_list_str=True, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "disrecommendations, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "reviews_summary, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "why, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "reccomendations, is_list=False, is_list_str=False, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "thread_urls, is_list=True, is_list_str=True, is_list_url=True, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "url, is_list=True, is_list_str=True, is_list_url=True, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "reviews_quotes, is_list=True, is_list_str=True, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n", + "if_you_liked_x_you_will_like_this, is_list=True, is_list_str=True, is_list_url=False, is_url=False, is_urls=False, is_list_obj=False\n", + "\n" + ] + }, + { + "data": { + "text/html": [ + "View the page /media/wassname/SGIronWolf/projects5/rrational/outputs/df_links5.html" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from rrational.export import export_df_2_html\n", + "from pathlib import Path\n", + "from rrational.transform import join_uniq, chain_lists, format_flair, c2md, collapsibe, urls2a,url2a, unique_elements, auto_transform_to_html\n", + "\n", + "df_rr2 = auto_transform_to_html(df_rr.copy().drop(columns=['comments']))\n", + "\n", + "export_df_2_html(df=df_rr2, output=Path('../outputs/df_links5.html'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/poetry.lock b/poetry.lock index 2cfaa518..86682631 100644 --- a/poetry.lock +++ b/poetry.lock @@ -75,21 +75,18 @@ urllib3 = "*" [[package]] name = "asttokens" -version = "2.4.1" +version = "3.0.0" description = "Annotate AST trees with source code positions" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, - {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, + {file = "asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2"}, + {file = "asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7"}, ] -[package.dependencies] -six = ">=1.12.0" - [package.extras] -astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] -test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] +astroid = ["astroid (>=2,<4)"] +test = ["astroid (>=2,<4)", "pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "attrs" @@ -161,89 +158,89 @@ beautifulsoup4 = "*" [[package]] name = "certifi" -version = "2024.8.30" +version = "2024.12.14" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8"}, - {file = "certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9"}, + {file = "certifi-2024.12.14-py3-none-any.whl", hash = "sha256:1275f7a45be9464efc1173084eaa30f866fe2e47d389406136d332ed4967ec56"}, + {file = "certifi-2024.12.14.tar.gz", hash = "sha256:b650d30f370c2b724812bee08008be0c4163b163ddaec3f2546c1caf65f191db"}, ] [[package]] name = "cffi" -version = "1.17.0" +version = "1.17.1" description = "Foreign Function Interface for Python calling C code." optional = false python-versions = ">=3.8" files = [ - {file = "cffi-1.17.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f9338cc05451f1942d0d8203ec2c346c830f8e86469903d5126c1f0a13a2bcbb"}, - {file = "cffi-1.17.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0ce71725cacc9ebf839630772b07eeec220cbb5f03be1399e0457a1464f8e1a"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c815270206f983309915a6844fe994b2fa47e5d05c4c4cef267c3b30e34dbe42"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6bdcd415ba87846fd317bee0774e412e8792832e7805938987e4ede1d13046d"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a98748ed1a1df4ee1d6f927e151ed6c1a09d5ec21684de879c7ea6aa96f58f2"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0a048d4f6630113e54bb4b77e315e1ba32a5a31512c31a273807d0027a7e69ab"}, - {file = "cffi-1.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24aa705a5f5bd3a8bcfa4d123f03413de5d86e497435693b638cbffb7d5d8a1b"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:856bf0924d24e7f93b8aee12a3a1095c34085600aa805693fb7f5d1962393206"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:4304d4416ff032ed50ad6bb87416d802e67139e31c0bde4628f36a47a3164bfa"}, - {file = "cffi-1.17.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:331ad15c39c9fe9186ceaf87203a9ecf5ae0ba2538c9e898e3a6967e8ad3db6f"}, - {file = "cffi-1.17.0-cp310-cp310-win32.whl", hash = "sha256:669b29a9eca6146465cc574659058ed949748f0809a2582d1f1a324eb91054dc"}, - {file = "cffi-1.17.0-cp310-cp310-win_amd64.whl", hash = "sha256:48b389b1fd5144603d61d752afd7167dfd205973a43151ae5045b35793232aa2"}, - {file = "cffi-1.17.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5d97162c196ce54af6700949ddf9409e9833ef1003b4741c2b39ef46f1d9720"}, - {file = "cffi-1.17.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ba5c243f4004c750836f81606a9fcb7841f8874ad8f3bf204ff5e56332b72b9"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bb9333f58fc3a2296fb1d54576138d4cf5d496a2cc118422bd77835e6ae0b9cb"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:435a22d00ec7d7ea533db494da8581b05977f9c37338c80bc86314bec2619424"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d1df34588123fcc88c872f5acb6f74ae59e9d182a2707097f9e28275ec26a12d"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:df8bb0010fdd0a743b7542589223a2816bdde4d94bb5ad67884348fa2c1c67e8"}, - {file = "cffi-1.17.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8b5b9712783415695663bd463990e2f00c6750562e6ad1d28e072a611c5f2a6"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ffef8fd58a36fb5f1196919638f73dd3ae0db1a878982b27a9a5a176ede4ba91"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e67d26532bfd8b7f7c05d5a766d6f437b362c1bf203a3a5ce3593a645e870b8"}, - {file = "cffi-1.17.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45f7cd36186db767d803b1473b3c659d57a23b5fa491ad83c6d40f2af58e4dbb"}, - {file = "cffi-1.17.0-cp311-cp311-win32.whl", hash = "sha256:a9015f5b8af1bb6837a3fcb0cdf3b874fe3385ff6274e8b7925d81ccaec3c5c9"}, - {file = "cffi-1.17.0-cp311-cp311-win_amd64.whl", hash = "sha256:b50aaac7d05c2c26dfd50c3321199f019ba76bb650e346a6ef3616306eed67b0"}, - {file = "cffi-1.17.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:aec510255ce690d240f7cb23d7114f6b351c733a74c279a84def763660a2c3bc"}, - {file = "cffi-1.17.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2770bb0d5e3cc0e31e7318db06efcbcdb7b31bcb1a70086d3177692a02256f59"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:db9a30ec064129d605d0f1aedc93e00894b9334ec74ba9c6bdd08147434b33eb"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a47eef975d2b8b721775a0fa286f50eab535b9d56c70a6e62842134cf7841195"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f3e0992f23bbb0be00a921eae5363329253c3b86287db27092461c887b791e5e"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6107e445faf057c118d5050560695e46d272e5301feffda3c41849641222a828"}, - {file = "cffi-1.17.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb862356ee9391dc5a0b3cbc00f416b48c1b9a52d252d898e5b7696a5f9fe150"}, - {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c1c13185b90bbd3f8b5963cd8ce7ad4ff441924c31e23c975cb150e27c2bf67a"}, - {file = "cffi-1.17.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:17c6d6d3260c7f2d94f657e6872591fe8733872a86ed1345bda872cfc8c74885"}, - {file = "cffi-1.17.0-cp312-cp312-win32.whl", hash = "sha256:c3b8bd3133cd50f6b637bb4322822c94c5ce4bf0d724ed5ae70afce62187c492"}, - {file = "cffi-1.17.0-cp312-cp312-win_amd64.whl", hash = "sha256:dca802c8db0720ce1c49cce1149ff7b06e91ba15fa84b1d59144fef1a1bc7ac2"}, - {file = "cffi-1.17.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6ce01337d23884b21c03869d2f68c5523d43174d4fc405490eb0091057943118"}, - {file = "cffi-1.17.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:cab2eba3830bf4f6d91e2d6718e0e1c14a2f5ad1af68a89d24ace0c6b17cced7"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14b9cbc8f7ac98a739558eb86fabc283d4d564dafed50216e7f7ee62d0d25377"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b00e7bcd71caa0282cbe3c90966f738e2db91e64092a877c3ff7f19a1628fdcb"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:41f4915e09218744d8bae14759f983e466ab69b178de38066f7579892ff2a555"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4760a68cab57bfaa628938e9c2971137e05ce48e762a9cb53b76c9b569f1204"}, - {file = "cffi-1.17.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:011aff3524d578a9412c8b3cfaa50f2c0bd78e03eb7af7aa5e0df59b158efb2f"}, - {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:a003ac9edc22d99ae1286b0875c460351f4e101f8c9d9d2576e78d7e048f64e0"}, - {file = "cffi-1.17.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ef9528915df81b8f4c7612b19b8628214c65c9b7f74db2e34a646a0a2a0da2d4"}, - {file = "cffi-1.17.0-cp313-cp313-win32.whl", hash = "sha256:70d2aa9fb00cf52034feac4b913181a6e10356019b18ef89bc7c12a283bf5f5a"}, - {file = "cffi-1.17.0-cp313-cp313-win_amd64.whl", hash = "sha256:b7b6ea9e36d32582cda3465f54c4b454f62f23cb083ebc7a94e2ca6ef011c3a7"}, - {file = "cffi-1.17.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:964823b2fc77b55355999ade496c54dde161c621cb1f6eac61dc30ed1b63cd4c"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:516a405f174fd3b88829eabfe4bb296ac602d6a0f68e0d64d5ac9456194a5b7e"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dec6b307ce928e8e112a6bb9921a1cb00a0e14979bf28b98e084a4b8a742bd9b"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e4094c7b464cf0a858e75cd14b03509e84789abf7b79f8537e6a72152109c76e"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2404f3de742f47cb62d023f0ba7c5a916c9c653d5b368cc966382ae4e57da401"}, - {file = "cffi-1.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aa9d43b02a0c681f0bfbc12d476d47b2b2b6a3f9287f11ee42989a268a1833c"}, - {file = "cffi-1.17.0-cp38-cp38-win32.whl", hash = "sha256:0bb15e7acf8ab35ca8b24b90af52c8b391690ef5c4aec3d31f38f0d37d2cc499"}, - {file = "cffi-1.17.0-cp38-cp38-win_amd64.whl", hash = "sha256:93a7350f6706b31f457c1457d3a3259ff9071a66f312ae64dc024f049055f72c"}, - {file = "cffi-1.17.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1a2ddbac59dc3716bc79f27906c010406155031a1c801410f1bafff17ea304d2"}, - {file = "cffi-1.17.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6327b572f5770293fc062a7ec04160e89741e8552bf1c358d1a23eba68166759"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbc183e7bef690c9abe5ea67b7b60fdbca81aa8da43468287dae7b5c046107d4"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bdc0f1f610d067c70aa3737ed06e2726fd9d6f7bfee4a351f4c40b6831f4e82"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d872186c1617d143969defeadac5a904e6e374183e07977eedef9c07c8953bf"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0d46ee4764b88b91f16661a8befc6bfb24806d885e27436fdc292ed7e6f6d058"}, - {file = "cffi-1.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f76a90c345796c01d85e6332e81cab6d70de83b829cf1d9762d0a3da59c7932"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e60821d312f99d3e1569202518dddf10ae547e799d75aef3bca3a2d9e8ee693"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:eb09b82377233b902d4c3fbeeb7ad731cdab579c6c6fda1f763cd779139e47c3"}, - {file = "cffi-1.17.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:24658baf6224d8f280e827f0a50c46ad819ec8ba380a42448e24459daf809cf4"}, - {file = "cffi-1.17.0-cp39-cp39-win32.whl", hash = "sha256:0fdacad9e0d9fc23e519efd5ea24a70348305e8d7d85ecbb1a5fa66dc834e7fb"}, - {file = "cffi-1.17.0-cp39-cp39-win_amd64.whl", hash = "sha256:7cbc78dc018596315d4e7841c8c3a7ae31cc4d638c9b627f87d52e8abaaf2d29"}, - {file = "cffi-1.17.0.tar.gz", hash = "sha256:f3157624b7558b914cb039fd1af735e5e8049a87c817cc215109ad1c8779df76"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14"}, + {file = "cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6"}, + {file = "cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e"}, + {file = "cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be"}, + {file = "cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c"}, + {file = "cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a45e3c6913c5b87b3ff120dcdc03f6131fa0065027d0ed7ee6190736a74cd401"}, + {file = "cffi-1.17.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30c5e0cb5ae493c04c8b42916e52ca38079f1b235c2f8ae5f4527b963c401caf"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f75c7ab1f9e4aca5414ed4d8e5c0e303a34f4421f8a0d47a4d019ceff0ab6af4"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a1ed2dd2972641495a3ec98445e09766f077aee98a1c896dcb4ad0d303628e41"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:46bf43160c1a35f7ec506d254e5c890f3c03648a4dbac12d624e4490a7046cd1"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a24ed04c8ffd54b0729c07cee15a81d964e6fee0e3d4d342a27b020d22959dc6"}, + {file = "cffi-1.17.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:610faea79c43e44c71e1ec53a554553fa22321b65fae24889706c0a84d4ad86d"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a9b15d491f3ad5d692e11f6b71f7857e7835eb677955c00cc0aefcd0669adaf6"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:de2ea4b5833625383e464549fec1bc395c1bdeeb5f25c4a3a82b5a8c756ec22f"}, + {file = "cffi-1.17.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc48c783f9c87e60831201f2cce7f3b2e4846bf4d8728eabe54d60700b318a0b"}, + {file = "cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655"}, + {file = "cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4"}, + {file = "cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99"}, + {file = "cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3"}, + {file = "cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8"}, + {file = "cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65"}, + {file = "cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e"}, + {file = "cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4"}, + {file = "cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed"}, + {file = "cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9"}, + {file = "cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d"}, + {file = "cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a"}, + {file = "cffi-1.17.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:636062ea65bd0195bc012fea9321aca499c0504409f413dc88af450b57ffd03b"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7eac2ef9b63c79431bc4b25f1cd649d7f061a28808cbc6c47b534bd789ef964"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e221cf152cff04059d011ee126477f0d9588303eb57e88923578ace7baad17f9"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31000ec67d4221a71bd3f67df918b1f88f676f1c3b535a7eb473255fdc0b83fc"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6f17be4345073b0a7b8ea599688f692ac3ef23ce28e5df79c04de519dbc4912c"}, + {file = "cffi-1.17.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2b1fac190ae3ebfe37b979cc1ce69c81f4e4fe5746bb401dca63a9062cdaf1"}, + {file = "cffi-1.17.1-cp38-cp38-win32.whl", hash = "sha256:7596d6620d3fa590f677e9ee430df2958d2d6d6de2feeae5b20e82c00b76fbf8"}, + {file = "cffi-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:78122be759c3f8a014ce010908ae03364d00a1f81ab5c7f4a7a5120607ea56e1"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b2ab587605f4ba0bf81dc0cb08a41bd1c0a5906bd59243d56bad7668a6fc6c16"}, + {file = "cffi-1.17.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:28b16024becceed8c6dfbc75629e27788d8a3f9030691a1dbf9821a128b22c36"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d599671f396c4723d016dbddb72fe8e0397082b0a77a4fab8028923bec050e8"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ca74b8dbe6e8e8263c0ffd60277de77dcee6c837a3d0881d8c1ead7268c9e576"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f7f5baafcc48261359e14bcd6d9bff6d4b28d9103847c9e136694cb0501aef87"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98e3969bcff97cae1b2def8ba499ea3d6f31ddfdb7635374834cf89a1a08ecf0"}, + {file = "cffi-1.17.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdf5ce3acdfd1661132f2a9c19cac174758dc2352bfe37d98aa7512c6b7178b3"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9755e4345d1ec879e3849e62222a18c7174d65a6a92d5b346b1863912168b595"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f1e22e8c4419538cb197e4dd60acc919d7696e5ef98ee4da4e01d3f8cfa4cc5a"}, + {file = "cffi-1.17.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c03e868a0b3bc35839ba98e74211ed2b05d2119be4e8a0f224fba9384f1fe02e"}, + {file = "cffi-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e31ae45bc2e29f6b2abd0de1cc3b9d5205aa847cafaecb8af1476a609a2f6eb7"}, + {file = "cffi-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:d016c76bdd850f3c626af19b0542c9677ba156e4ee4fccfdd7848803533ef662"}, + {file = "cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824"}, ] [package.dependencies] @@ -262,101 +259,103 @@ files = [ [[package]] name = "charset-normalizer" -version = "3.3.2" +version = "3.4.1" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false -python-versions = ">=3.7.0" +python-versions = ">=3.7" 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"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f"}, + {file = "charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b"}, + {file = "charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35"}, + {file = "charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407"}, + {file = "charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f30bf9fd9be89ecb2360c7d94a711f00c09b976258846efe40db3d05828e8089"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97f68b8d6831127e4787ad15e6757232e14e12060bec17091b85eb1486b91d8d"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7974a0b5ecd505609e3b19742b60cee7aa2aa2fb3151bc917e6e2646d7667dcf"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc54db6c8593ef7d4b2a331b58653356cf04f67c960f584edb7c3d8c97e8f39e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:311f30128d7d333eebd7896965bfcfbd0065f1716ec92bd5638d7748eb6f936a"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:7d053096f67cd1241601111b698f5cad775f97ab25d81567d3f59219b5f1adbd"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_i686.whl", hash = "sha256:807f52c1f798eef6cf26beb819eeb8819b1622ddfeef9d0977a8502d4db6d534"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:dccbe65bd2f7f7ec22c4ff99ed56faa1e9f785482b9bbd7c717e26fd723a1d1e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:2fb9bd477fdea8684f78791a6de97a953c51831ee2981f8e4f583ff3b9d9687e"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:01732659ba9b5b873fc117534143e4feefecf3b2078b0a6a2e925271bb6f4cfa"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:7a4f97a081603d2050bfaffdefa5b02a9ec823f8348a572e39032caa8404a487"}, + {file = "charset_normalizer-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7b1bef6280950ee6c177b326508f86cad7ad4dff12454483b51d8b7d673a2c5d"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ecddf25bee22fe4fe3737a399d0d177d72bc22be6913acfab364b40bce1ba83c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c60ca7339acd497a55b0ea5d506b2a2612afb2826560416f6894e8b5770d4a9"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b7b2d86dd06bfc2ade3312a83a5c364c7ec2e3498f8734282c6c3d4b07b346b8"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dd78cfcda14a1ef52584dbb008f7ac81c1328c0f58184bf9a84c49c605002da6"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e27f48bcd0957c6d4cb9d6fa6b61d192d0b13d5ef563e5f2ae35feafc0d179c"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01ad647cdd609225c5350561d084b42ddf732f4eeefe6e678765636791e78b9a"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:619a609aa74ae43d90ed2e89bdd784765de0a25ca761b93e196d938b8fd1dbbd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:89149166622f4db9b4b6a449256291dc87a99ee53151c74cbd82a53c8c2f6ccd"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:7709f51f5f7c853f0fb938bcd3bc59cdfdc5203635ffd18bf354f6967ea0f824"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:345b0426edd4e18138d6528aed636de7a9ed169b4aaf9d61a8c19e39d26838ca"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:0907f11d019260cdc3f94fbdb23ff9125f6b5d1039b76003b5b0ac9d6a6c9d5b"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win32.whl", hash = "sha256:ea0d8d539afa5eb2728aa1932a988a9a7af94f18582ffae4bc10b3fbdad0626e"}, + {file = "charset_normalizer-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:329ce159e82018d646c7ac45b01a430369d526569ec08516081727a20e9e4af4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b97e690a2118911e39b4042088092771b4ae3fc3aa86518f84b8cf6888dbdb41"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78baa6d91634dfb69ec52a463534bc0df05dbd546209b79a3880a34487f4b84f"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a2bc9f351a75ef49d664206d51f8e5ede9da246602dc2d2726837620ea034b2"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75832c08354f595c760a804588b9357d34ec00ba1c940c15e31e96d902093770"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0af291f4fe114be0280cdd29d533696a77b5b49cfde5467176ecab32353395c4"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0167ddc8ab6508fe81860a57dd472b2ef4060e8d378f0cc555707126830f2537"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:2a75d49014d118e4198bcee5ee0a6f25856b29b12dbf7cd012791f8a6cc5c496"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:363e2f92b0f0174b2f8238240a1a30142e3db7b957a5dd5689b0e75fb717cc78"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:ab36c8eb7e454e34e60eb55ca5d241a5d18b2c6244f6827a30e451c42410b5f7"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4c0907b1928a36d5a998d72d64d8eaa7244989f7aaaf947500d3a800c83a3fd6"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:04432ad9479fa40ec0f387795ddad4437a2b50417c69fa275e212933519ff294"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win32.whl", hash = "sha256:3bed14e9c89dcb10e8f3a29f9ccac4955aebe93c71ae803af79265c9ca5644c5"}, + {file = "charset_normalizer-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:49402233c892a461407c512a19435d1ce275543138294f7ef013f0b63d5d3765"}, + {file = "charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85"}, + {file = "charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3"}, ] [[package]] @@ -405,76 +404,65 @@ test = ["pytest"] [[package]] name = "contourpy" -version = "1.3.0" +version = "1.3.1" description = "Python library for calculating contours of 2D quadrilateral grids" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" files = [ - {file = "contourpy-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:880ea32e5c774634f9fcd46504bf9f080a41ad855f4fef54f5380f5133d343c7"}, - {file = "contourpy-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:76c905ef940a4474a6289c71d53122a4f77766eef23c03cd57016ce19d0f7b42"}, - {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92f8557cbb07415a4d6fa191f20fd9d2d9eb9c0b61d1b2f52a8926e43c6e9af7"}, - {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:36f965570cff02b874773c49bfe85562b47030805d7d8360748f3eca570f4cab"}, - {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cacd81e2d4b6f89c9f8a5b69b86490152ff39afc58a95af002a398273e5ce589"}, - {file = "contourpy-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69375194457ad0fad3a839b9e29aa0b0ed53bb54db1bfb6c3ae43d111c31ce41"}, - {file = "contourpy-1.3.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7a52040312b1a858b5e31ef28c2e865376a386c60c0e248370bbea2d3f3b760d"}, - {file = "contourpy-1.3.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3faeb2998e4fcb256542e8a926d08da08977f7f5e62cf733f3c211c2a5586223"}, - {file = "contourpy-1.3.0-cp310-cp310-win32.whl", hash = "sha256:36e0cff201bcb17a0a8ecc7f454fe078437fa6bda730e695a92f2d9932bd507f"}, - {file = "contourpy-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:87ddffef1dbe5e669b5c2440b643d3fdd8622a348fe1983fad7a0f0ccb1cd67b"}, - {file = "contourpy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fa4c02abe6c446ba70d96ece336e621efa4aecae43eaa9b030ae5fb92b309ad"}, - {file = "contourpy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:834e0cfe17ba12f79963861e0f908556b2cedd52e1f75e6578801febcc6a9f49"}, - {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dbc4c3217eee163fa3984fd1567632b48d6dfd29216da3ded3d7b844a8014a66"}, - {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4865cd1d419e0c7a7bf6de1777b185eebdc51470800a9f42b9e9decf17762081"}, - {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:303c252947ab4b14c08afeb52375b26781ccd6a5ccd81abcdfc1fafd14cf93c1"}, - {file = "contourpy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:637f674226be46f6ba372fd29d9523dd977a291f66ab2a74fbeb5530bb3f445d"}, - {file = "contourpy-1.3.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:76a896b2f195b57db25d6b44e7e03f221d32fe318d03ede41f8b4d9ba1bff53c"}, - {file = "contourpy-1.3.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e1fd23e9d01591bab45546c089ae89d926917a66dceb3abcf01f6105d927e2cb"}, - {file = "contourpy-1.3.0-cp311-cp311-win32.whl", hash = "sha256:d402880b84df3bec6eab53cd0cf802cae6a2ef9537e70cf75e91618a3801c20c"}, - {file = "contourpy-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:6cb6cc968059db9c62cb35fbf70248f40994dfcd7aa10444bbf8b3faeb7c2d67"}, - {file = "contourpy-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:570ef7cf892f0afbe5b2ee410c507ce12e15a5fa91017a0009f79f7d93a1268f"}, - {file = "contourpy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:da84c537cb8b97d153e9fb208c221c45605f73147bd4cadd23bdae915042aad6"}, - {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0be4d8425bfa755e0fd76ee1e019636ccc7c29f77a7c86b4328a9eb6a26d0639"}, - {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c0da700bf58f6e0b65312d0a5e695179a71d0163957fa381bb3c1f72972537c"}, - {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb8b141bb00fa977d9122636b16aa67d37fd40a3d8b52dd837e536d64b9a4d06"}, - {file = "contourpy-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3634b5385c6716c258d0419c46d05c8aa7dc8cb70326c9a4fb66b69ad2b52e09"}, - {file = "contourpy-1.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0dce35502151b6bd35027ac39ba6e5a44be13a68f55735c3612c568cac3805fd"}, - {file = "contourpy-1.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:aea348f053c645100612b333adc5983d87be69acdc6d77d3169c090d3b01dc35"}, - {file = "contourpy-1.3.0-cp312-cp312-win32.whl", hash = "sha256:90f73a5116ad1ba7174341ef3ea5c3150ddf20b024b98fb0c3b29034752c8aeb"}, - {file = "contourpy-1.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:b11b39aea6be6764f84360fce6c82211a9db32a7c7de8fa6dd5397cf1d079c3b"}, - {file = "contourpy-1.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:3e1c7fa44aaae40a2247e2e8e0627f4bea3dd257014764aa644f319a5f8600e3"}, - {file = "contourpy-1.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:364174c2a76057feef647c802652f00953b575723062560498dc7930fc9b1cb7"}, - {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32b238b3b3b649e09ce9aaf51f0c261d38644bdfa35cbaf7b263457850957a84"}, - {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d51fca85f9f7ad0b65b4b9fe800406d0d77017d7270d31ec3fb1cc07358fdea0"}, - {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:732896af21716b29ab3e988d4ce14bc5133733b85956316fb0c56355f398099b"}, - {file = "contourpy-1.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d73f659398a0904e125280836ae6f88ba9b178b2fed6884f3b1f95b989d2c8da"}, - {file = "contourpy-1.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c6c7c2408b7048082932cf4e641fa3b8ca848259212f51c8c59c45aa7ac18f14"}, - {file = "contourpy-1.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f317576606de89da6b7e0861cf6061f6146ead3528acabff9236458a6ba467f8"}, - {file = "contourpy-1.3.0-cp313-cp313-win32.whl", hash = "sha256:31cd3a85dbdf1fc002280c65caa7e2b5f65e4a973fcdf70dd2fdcb9868069294"}, - {file = "contourpy-1.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:4553c421929ec95fb07b3aaca0fae668b2eb5a5203d1217ca7c34c063c53d087"}, - {file = "contourpy-1.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:345af746d7766821d05d72cb8f3845dfd08dd137101a2cb9b24de277d716def8"}, - {file = "contourpy-1.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3bb3808858a9dc68f6f03d319acd5f1b8a337e6cdda197f02f4b8ff67ad2057b"}, - {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:420d39daa61aab1221567b42eecb01112908b2cab7f1b4106a52caaec8d36973"}, - {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d63ee447261e963af02642ffcb864e5a2ee4cbfd78080657a9880b8b1868e18"}, - {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:167d6c890815e1dac9536dca00828b445d5d0df4d6a8c6adb4a7ec3166812fa8"}, - {file = "contourpy-1.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:710a26b3dc80c0e4febf04555de66f5fd17e9cf7170a7b08000601a10570bda6"}, - {file = "contourpy-1.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:75ee7cb1a14c617f34a51d11fa7524173e56551646828353c4af859c56b766e2"}, - {file = "contourpy-1.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:33c92cdae89ec5135d036e7218e69b0bb2851206077251f04a6c4e0e21f03927"}, - {file = "contourpy-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a11077e395f67ffc2c44ec2418cfebed032cd6da3022a94fc227b6faf8e2acb8"}, - {file = "contourpy-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e8134301d7e204c88ed7ab50028ba06c683000040ede1d617298611f9dc6240c"}, - {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e12968fdfd5bb45ffdf6192a590bd8ddd3ba9e58360b29683c6bb71a7b41edca"}, - {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fd2a0fc506eccaaa7595b7e1418951f213cf8255be2600f1ea1b61e46a60c55f"}, - {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4cfb5c62ce023dfc410d6059c936dcf96442ba40814aefbfa575425a3a7f19dc"}, - {file = "contourpy-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68a32389b06b82c2fdd68276148d7b9275b5f5cf13e5417e4252f6d1a34f72a2"}, - {file = "contourpy-1.3.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:94e848a6b83da10898cbf1311a815f770acc9b6a3f2d646f330d57eb4e87592e"}, - {file = "contourpy-1.3.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:d78ab28a03c854a873787a0a42254a0ccb3cb133c672f645c9f9c8f3ae9d0800"}, - {file = "contourpy-1.3.0-cp39-cp39-win32.whl", hash = "sha256:81cb5ed4952aae6014bc9d0421dec7c5835c9c8c31cdf51910b708f548cf58e5"}, - {file = "contourpy-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:14e262f67bd7e6eb6880bc564dcda30b15e351a594657e55b7eec94b6ef72843"}, - {file = "contourpy-1.3.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fe41b41505a5a33aeaed2a613dccaeaa74e0e3ead6dd6fd3a118fb471644fd6c"}, - {file = "contourpy-1.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eca7e17a65f72a5133bdbec9ecf22401c62bcf4821361ef7811faee695799779"}, - {file = "contourpy-1.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ec4dc6bf570f5b22ed0d7efba0dfa9c5b9e0431aeea7581aa217542d9e809a4"}, - {file = "contourpy-1.3.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:00ccd0dbaad6d804ab259820fa7cb0b8036bda0686ef844d24125d8287178ce0"}, - {file = "contourpy-1.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ca947601224119117f7c19c9cdf6b3ab54c5726ef1d906aa4a69dfb6dd58102"}, - {file = "contourpy-1.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c6ec93afeb848a0845a18989da3beca3eec2c0f852322efe21af1931147d12cb"}, - {file = "contourpy-1.3.0.tar.gz", hash = "sha256:7ffa0db17717a8ffb127efd0c95a4362d996b892c2904db72428d5b52e1938a4"}, + {file = "contourpy-1.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a045f341a77b77e1c5de31e74e966537bba9f3c4099b35bf4c2e3939dd54cdab"}, + {file = "contourpy-1.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:500360b77259914f7805af7462e41f9cb7ca92ad38e9f94d6c8641b089338124"}, + {file = "contourpy-1.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2f926efda994cdf3c8d3fdb40b9962f86edbc4457e739277b961eced3d0b4c1"}, + {file = "contourpy-1.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:adce39d67c0edf383647a3a007de0a45fd1b08dedaa5318404f1a73059c2512b"}, + {file = "contourpy-1.3.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abbb49fb7dac584e5abc6636b7b2a7227111c4f771005853e7d25176daaf8453"}, + {file = "contourpy-1.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0cffcbede75c059f535725c1680dfb17b6ba8753f0c74b14e6a9c68c29d7ea3"}, + {file = "contourpy-1.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:ab29962927945d89d9b293eabd0d59aea28d887d4f3be6c22deaefbb938a7277"}, + {file = "contourpy-1.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:974d8145f8ca354498005b5b981165b74a195abfae9a8129df3e56771961d595"}, + {file = "contourpy-1.3.1-cp310-cp310-win32.whl", hash = "sha256:ac4578ac281983f63b400f7fe6c101bedc10651650eef012be1ccffcbacf3697"}, + {file = "contourpy-1.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:174e758c66bbc1c8576992cec9599ce8b6672b741b5d336b5c74e35ac382b18e"}, + {file = "contourpy-1.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3e8b974d8db2c5610fb4e76307e265de0edb655ae8169e8b21f41807ccbeec4b"}, + {file = "contourpy-1.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:20914c8c973f41456337652a6eeca26d2148aa96dd7ac323b74516988bea89fc"}, + {file = "contourpy-1.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19d40d37c1c3a4961b4619dd9d77b12124a453cc3d02bb31a07d58ef684d3d86"}, + {file = "contourpy-1.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:113231fe3825ebf6f15eaa8bc1f5b0ddc19d42b733345eae0934cb291beb88b6"}, + {file = "contourpy-1.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4dbbc03a40f916a8420e420d63e96a1258d3d1b58cbdfd8d1f07b49fcbd38e85"}, + {file = "contourpy-1.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a04ecd68acbd77fa2d39723ceca4c3197cb2969633836ced1bea14e219d077c"}, + {file = "contourpy-1.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c414fc1ed8ee1dbd5da626cf3710c6013d3d27456651d156711fa24f24bd1291"}, + {file = "contourpy-1.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:31c1b55c1f34f80557d3830d3dd93ba722ce7e33a0b472cba0ec3b6535684d8f"}, + {file = "contourpy-1.3.1-cp311-cp311-win32.whl", hash = "sha256:f611e628ef06670df83fce17805c344710ca5cde01edfdc72751311da8585375"}, + {file = "contourpy-1.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:b2bdca22a27e35f16794cf585832e542123296b4687f9fd96822db6bae17bfc9"}, + {file = "contourpy-1.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ffa84be8e0bd33410b17189f7164c3589c229ce5db85798076a3fa136d0e509"}, + {file = "contourpy-1.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805617228ba7e2cbbfb6c503858e626ab528ac2a32a04a2fe88ffaf6b02c32bc"}, + {file = "contourpy-1.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ade08d343436a94e633db932e7e8407fe7de8083967962b46bdfc1b0ced39454"}, + {file = "contourpy-1.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:47734d7073fb4590b4a40122b35917cd77be5722d80683b249dac1de266aac80"}, + {file = "contourpy-1.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2ba94a401342fc0f8b948e57d977557fbf4d515f03c67682dd5c6191cb2d16ec"}, + {file = "contourpy-1.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efa874e87e4a647fd2e4f514d5e91c7d493697127beb95e77d2f7561f6905bd9"}, + {file = "contourpy-1.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1bf98051f1045b15c87868dbaea84f92408337d4f81d0e449ee41920ea121d3b"}, + {file = "contourpy-1.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:61332c87493b00091423e747ea78200659dc09bdf7fd69edd5e98cef5d3e9a8d"}, + {file = "contourpy-1.3.1-cp312-cp312-win32.whl", hash = "sha256:e914a8cb05ce5c809dd0fe350cfbb4e881bde5e2a38dc04e3afe1b3e58bd158e"}, + {file = "contourpy-1.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:08d9d449a61cf53033612cb368f3a1b26cd7835d9b8cd326647efe43bca7568d"}, + {file = "contourpy-1.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a761d9ccfc5e2ecd1bf05534eda382aa14c3e4f9205ba5b1684ecfe400716ef2"}, + {file = "contourpy-1.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:523a8ee12edfa36f6d2a49407f705a6ef4c5098de4f498619787e272de93f2d5"}, + {file = "contourpy-1.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece6df05e2c41bd46776fbc712e0996f7c94e0d0543af1656956d150c4ca7c81"}, + {file = "contourpy-1.3.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:573abb30e0e05bf31ed067d2f82500ecfdaec15627a59d63ea2d95714790f5c2"}, + {file = "contourpy-1.3.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9fa36448e6a3a1a9a2ba23c02012c43ed88905ec80163f2ffe2421c7192a5d7"}, + {file = "contourpy-1.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ea9924d28fc5586bf0b42d15f590b10c224117e74409dd7a0be3b62b74a501c"}, + {file = "contourpy-1.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5b75aa69cb4d6f137b36f7eb2ace9280cfb60c55dc5f61c731fdf6f037f958a3"}, + {file = "contourpy-1.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:041b640d4ec01922083645a94bb3b2e777e6b626788f4095cf21abbe266413c1"}, + {file = "contourpy-1.3.1-cp313-cp313-win32.whl", hash = "sha256:36987a15e8ace5f58d4d5da9dca82d498c2bbb28dff6e5d04fbfcc35a9cb3a82"}, + {file = "contourpy-1.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:a7895f46d47671fa7ceec40f31fae721da51ad34bdca0bee83e38870b1f47ffd"}, + {file = "contourpy-1.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9ddeb796389dadcd884c7eb07bd14ef12408aaae358f0e2ae24114d797eede30"}, + {file = "contourpy-1.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:19c1555a6801c2f084c7ddc1c6e11f02eb6a6016ca1318dd5452ba3f613a1751"}, + {file = "contourpy-1.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841ad858cff65c2c04bf93875e384ccb82b654574a6d7f30453a04f04af71342"}, + {file = "contourpy-1.3.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4318af1c925fb9a4fb190559ef3eec206845f63e80fb603d47f2d6d67683901c"}, + {file = "contourpy-1.3.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:14c102b0eab282427b662cb590f2e9340a9d91a1c297f48729431f2dcd16e14f"}, + {file = "contourpy-1.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05e806338bfeaa006acbdeba0ad681a10be63b26e1b17317bfac3c5d98f36cda"}, + {file = "contourpy-1.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4d76d5993a34ef3df5181ba3c92fabb93f1eaa5729504fb03423fcd9f3177242"}, + {file = "contourpy-1.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:89785bb2a1980c1bd87f0cb1517a71cde374776a5f150936b82580ae6ead44a1"}, + {file = "contourpy-1.3.1-cp313-cp313t-win32.whl", hash = "sha256:8eb96e79b9f3dcadbad2a3891672f81cdcab7f95b27f28f1c67d75f045b6b4f1"}, + {file = "contourpy-1.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:287ccc248c9e0d0566934e7d606201abd74761b5703d804ff3df8935f523d546"}, + {file = "contourpy-1.3.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b457d6430833cee8e4b8e9b6f07aa1c161e5e0d52e118dc102c8f9bd7dd060d6"}, + {file = "contourpy-1.3.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb76c1a154b83991a3cbbf0dfeb26ec2833ad56f95540b442c73950af2013750"}, + {file = "contourpy-1.3.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:44a29502ca9c7b5ba389e620d44f2fbe792b1fb5734e8b931ad307071ec58c53"}, + {file = "contourpy-1.3.1.tar.gz", hash = "sha256:dfd97abd83335045a913e3bcc4a09c0ceadbe66580cf573fe961f4a825efa699"}, ] [package.dependencies] @@ -515,33 +503,37 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "debugpy" -version = "1.8.5" +version = "1.8.11" description = "An implementation of the Debug Adapter Protocol for Python" optional = false python-versions = ">=3.8" files = [ - {file = "debugpy-1.8.5-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:7e4d594367d6407a120b76bdaa03886e9eb652c05ba7f87e37418426ad2079f7"}, - {file = "debugpy-1.8.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4413b7a3ede757dc33a273a17d685ea2b0c09dbd312cc03f5534a0fd4d40750a"}, - {file = "debugpy-1.8.5-cp310-cp310-win32.whl", hash = "sha256:dd3811bd63632bb25eda6bd73bea8e0521794cda02be41fa3160eb26fc29e7ed"}, - {file = "debugpy-1.8.5-cp310-cp310-win_amd64.whl", hash = "sha256:b78c1250441ce893cb5035dd6f5fc12db968cc07f91cc06996b2087f7cefdd8e"}, - {file = "debugpy-1.8.5-cp311-cp311-macosx_12_0_universal2.whl", hash = "sha256:606bccba19f7188b6ea9579c8a4f5a5364ecd0bf5a0659c8a5d0e10dcee3032a"}, - {file = "debugpy-1.8.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db9fb642938a7a609a6c865c32ecd0d795d56c1aaa7a7a5722d77855d5e77f2b"}, - {file = "debugpy-1.8.5-cp311-cp311-win32.whl", hash = "sha256:4fbb3b39ae1aa3e5ad578f37a48a7a303dad9a3d018d369bc9ec629c1cfa7408"}, - {file = "debugpy-1.8.5-cp311-cp311-win_amd64.whl", hash = "sha256:345d6a0206e81eb68b1493ce2fbffd57c3088e2ce4b46592077a943d2b968ca3"}, - {file = "debugpy-1.8.5-cp312-cp312-macosx_12_0_universal2.whl", hash = "sha256:5b5c770977c8ec6c40c60d6f58cacc7f7fe5a45960363d6974ddb9b62dbee156"}, - {file = "debugpy-1.8.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0a65b00b7cdd2ee0c2cf4c7335fef31e15f1b7056c7fdbce9e90193e1a8c8cb"}, - {file = "debugpy-1.8.5-cp312-cp312-win32.whl", hash = "sha256:c9f7c15ea1da18d2fcc2709e9f3d6de98b69a5b0fff1807fb80bc55f906691f7"}, - {file = "debugpy-1.8.5-cp312-cp312-win_amd64.whl", hash = "sha256:28ced650c974aaf179231668a293ecd5c63c0a671ae6d56b8795ecc5d2f48d3c"}, - {file = "debugpy-1.8.5-cp38-cp38-macosx_12_0_x86_64.whl", hash = "sha256:3df6692351172a42af7558daa5019651f898fc67450bf091335aa8a18fbf6f3a"}, - {file = "debugpy-1.8.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cd04a73eb2769eb0bfe43f5bfde1215c5923d6924b9b90f94d15f207a402226"}, - {file = "debugpy-1.8.5-cp38-cp38-win32.whl", hash = "sha256:8f913ee8e9fcf9d38a751f56e6de12a297ae7832749d35de26d960f14280750a"}, - {file = "debugpy-1.8.5-cp38-cp38-win_amd64.whl", hash = "sha256:a697beca97dad3780b89a7fb525d5e79f33821a8bc0c06faf1f1289e549743cf"}, - {file = "debugpy-1.8.5-cp39-cp39-macosx_12_0_x86_64.whl", hash = "sha256:0a1029a2869d01cb777216af8c53cda0476875ef02a2b6ff8b2f2c9a4b04176c"}, - {file = "debugpy-1.8.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84c276489e141ed0b93b0af648eef891546143d6a48f610945416453a8ad406"}, - {file = "debugpy-1.8.5-cp39-cp39-win32.whl", hash = "sha256:ad84b7cde7fd96cf6eea34ff6c4a1b7887e0fe2ea46e099e53234856f9d99a34"}, - {file = "debugpy-1.8.5-cp39-cp39-win_amd64.whl", hash = "sha256:7b0fe36ed9d26cb6836b0a51453653f8f2e347ba7348f2bbfe76bfeb670bfb1c"}, - {file = "debugpy-1.8.5-py2.py3-none-any.whl", hash = "sha256:55919dce65b471eff25901acf82d328bbd5b833526b6c1364bd5133754777a44"}, - {file = "debugpy-1.8.5.zip", hash = "sha256:b2112cfeb34b4507399d298fe7023a16656fc553ed5246536060ca7bd0e668d0"}, + {file = "debugpy-1.8.11-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:2b26fefc4e31ff85593d68b9022e35e8925714a10ab4858fb1b577a8a48cb8cd"}, + {file = "debugpy-1.8.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61bc8b3b265e6949855300e84dc93d02d7a3a637f2aec6d382afd4ceb9120c9f"}, + {file = "debugpy-1.8.11-cp310-cp310-win32.whl", hash = "sha256:c928bbf47f65288574b78518449edaa46c82572d340e2750889bbf8cd92f3737"}, + {file = "debugpy-1.8.11-cp310-cp310-win_amd64.whl", hash = "sha256:8da1db4ca4f22583e834dcabdc7832e56fe16275253ee53ba66627b86e304da1"}, + {file = "debugpy-1.8.11-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:85de8474ad53ad546ff1c7c7c89230db215b9b8a02754d41cb5a76f70d0be296"}, + {file = "debugpy-1.8.11-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ffc382e4afa4aee367bf413f55ed17bd91b191dcaf979890af239dda435f2a1"}, + {file = "debugpy-1.8.11-cp311-cp311-win32.whl", hash = "sha256:40499a9979c55f72f4eb2fc38695419546b62594f8af194b879d2a18439c97a9"}, + {file = "debugpy-1.8.11-cp311-cp311-win_amd64.whl", hash = "sha256:987bce16e86efa86f747d5151c54e91b3c1e36acc03ce1ddb50f9d09d16ded0e"}, + {file = "debugpy-1.8.11-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:84e511a7545d11683d32cdb8f809ef63fc17ea2a00455cc62d0a4dbb4ed1c308"}, + {file = "debugpy-1.8.11-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce291a5aca4985d82875d6779f61375e959208cdf09fcec40001e65fb0a54768"}, + {file = "debugpy-1.8.11-cp312-cp312-win32.whl", hash = "sha256:28e45b3f827d3bf2592f3cf7ae63282e859f3259db44ed2b129093ca0ac7940b"}, + {file = "debugpy-1.8.11-cp312-cp312-win_amd64.whl", hash = "sha256:44b1b8e6253bceada11f714acf4309ffb98bfa9ac55e4fce14f9e5d4484287a1"}, + {file = "debugpy-1.8.11-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:8988f7163e4381b0da7696f37eec7aca19deb02e500245df68a7159739bbd0d3"}, + {file = "debugpy-1.8.11-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c1f6a173d1140e557347419767d2b14ac1c9cd847e0b4c5444c7f3144697e4e"}, + {file = "debugpy-1.8.11-cp313-cp313-win32.whl", hash = "sha256:bb3b15e25891f38da3ca0740271e63ab9db61f41d4d8541745cfc1824252cb28"}, + {file = "debugpy-1.8.11-cp313-cp313-win_amd64.whl", hash = "sha256:d8768edcbeb34da9e11bcb8b5c2e0958d25218df7a6e56adf415ef262cd7b6d1"}, + {file = "debugpy-1.8.11-cp38-cp38-macosx_14_0_x86_64.whl", hash = "sha256:ad7efe588c8f5cf940f40c3de0cd683cc5b76819446abaa50dc0829a30c094db"}, + {file = "debugpy-1.8.11-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:189058d03a40103a57144752652b3ab08ff02b7595d0ce1f651b9acc3a3a35a0"}, + {file = "debugpy-1.8.11-cp38-cp38-win32.whl", hash = "sha256:32db46ba45849daed7ccf3f2e26f7a386867b077f39b2a974bb5c4c2c3b0a280"}, + {file = "debugpy-1.8.11-cp38-cp38-win_amd64.whl", hash = "sha256:116bf8342062246ca749013df4f6ea106f23bc159305843491f64672a55af2e5"}, + {file = "debugpy-1.8.11-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:654130ca6ad5de73d978057eaf9e582244ff72d4574b3e106fb8d3d2a0d32458"}, + {file = "debugpy-1.8.11-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23dc34c5e03b0212fa3c49a874df2b8b1b8fda95160bd79c01eb3ab51ea8d851"}, + {file = "debugpy-1.8.11-cp39-cp39-win32.whl", hash = "sha256:52d8a3166c9f2815bfae05f386114b0b2d274456980d41f320299a8d9a5615a7"}, + {file = "debugpy-1.8.11-cp39-cp39-win_amd64.whl", hash = "sha256:52c3cf9ecda273a19cc092961ee34eb9ba8687d67ba34cc7b79a521c1c64c4c0"}, + {file = "debugpy-1.8.11-py2.py3-none-any.whl", hash = "sha256:0e22f846f4211383e6a416d04b4c13ed174d24cc5d43f5fd52e7821d0ebc8920"}, + {file = "debugpy-1.8.11.tar.gz", hash = "sha256:6ad2688b69235c43b020e04fecccdf6a96c8943ca9c2fb340b8adc103c655e57"}, ] [[package]] @@ -641,53 +633,61 @@ typing = ["typing-extensions (>=4.12.2)"] [[package]] name = "fonttools" -version = "4.53.1" +version = "4.55.3" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.53.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0679a30b59d74b6242909945429dbddb08496935b82f91ea9bf6ad240ec23397"}, - {file = "fonttools-4.53.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e8bf06b94694251861ba7fdeea15c8ec0967f84c3d4143ae9daf42bbc7717fe3"}, - {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b96cd370a61f4d083c9c0053bf634279b094308d52fdc2dd9a22d8372fdd590d"}, - {file = "fonttools-4.53.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1c7c5aa18dd3b17995898b4a9b5929d69ef6ae2af5b96d585ff4005033d82f0"}, - {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e013aae589c1c12505da64a7d8d023e584987e51e62006e1bb30d72f26522c41"}, - {file = "fonttools-4.53.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:9efd176f874cb6402e607e4cc9b4a9cd584d82fc34a4b0c811970b32ba62501f"}, - {file = "fonttools-4.53.1-cp310-cp310-win32.whl", hash = "sha256:c8696544c964500aa9439efb6761947393b70b17ef4e82d73277413f291260a4"}, - {file = "fonttools-4.53.1-cp310-cp310-win_amd64.whl", hash = "sha256:8959a59de5af6d2bec27489e98ef25a397cfa1774b375d5787509c06659b3671"}, - {file = "fonttools-4.53.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:da33440b1413bad53a8674393c5d29ce64d8c1a15ef8a77c642ffd900d07bfe1"}, - {file = "fonttools-4.53.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5ff7e5e9bad94e3a70c5cd2fa27f20b9bb9385e10cddab567b85ce5d306ea923"}, - {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6e7170d675d12eac12ad1a981d90f118c06cf680b42a2d74c6c931e54b50719"}, - {file = "fonttools-4.53.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bee32ea8765e859670c4447b0817514ca79054463b6b79784b08a8df3a4d78e3"}, - {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6e08f572625a1ee682115223eabebc4c6a2035a6917eac6f60350aba297ccadb"}, - {file = "fonttools-4.53.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b21952c092ffd827504de7e66b62aba26fdb5f9d1e435c52477e6486e9d128b2"}, - {file = "fonttools-4.53.1-cp311-cp311-win32.whl", hash = "sha256:9dfdae43b7996af46ff9da520998a32b105c7f098aeea06b2226b30e74fbba88"}, - {file = "fonttools-4.53.1-cp311-cp311-win_amd64.whl", hash = "sha256:d4d0096cb1ac7a77b3b41cd78c9b6bc4a400550e21dc7a92f2b5ab53ed74eb02"}, - {file = "fonttools-4.53.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d92d3c2a1b39631a6131c2fa25b5406855f97969b068e7e08413325bc0afba58"}, - {file = "fonttools-4.53.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3b3c8ebafbee8d9002bd8f1195d09ed2bd9ff134ddec37ee8f6a6375e6a4f0e8"}, - {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f029c095ad66c425b0ee85553d0dc326d45d7059dbc227330fc29b43e8ba60"}, - {file = "fonttools-4.53.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f5e6c3510b79ea27bb1ebfcc67048cde9ec67afa87c7dd7efa5c700491ac7f"}, - {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f677ce218976496a587ab17140da141557beb91d2a5c1a14212c994093f2eae2"}, - {file = "fonttools-4.53.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9e6ceba2a01b448e36754983d376064730690401da1dd104ddb543519470a15f"}, - {file = "fonttools-4.53.1-cp312-cp312-win32.whl", hash = "sha256:791b31ebbc05197d7aa096bbc7bd76d591f05905d2fd908bf103af4488e60670"}, - {file = "fonttools-4.53.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ed170b5e17da0264b9f6fae86073be3db15fa1bd74061c8331022bca6d09bab"}, - {file = "fonttools-4.53.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:c818c058404eb2bba05e728d38049438afd649e3c409796723dfc17cd3f08749"}, - {file = "fonttools-4.53.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:651390c3b26b0c7d1f4407cad281ee7a5a85a31a110cbac5269de72a51551ba2"}, - {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e54f1bba2f655924c1138bbc7fa91abd61f45c68bd65ab5ed985942712864bbb"}, - {file = "fonttools-4.53.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9cd19cf4fe0595ebdd1d4915882b9440c3a6d30b008f3cc7587c1da7b95be5f"}, - {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2af40ae9cdcb204fc1d8f26b190aa16534fcd4f0df756268df674a270eab575d"}, - {file = "fonttools-4.53.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:35250099b0cfb32d799fb5d6c651220a642fe2e3c7d2560490e6f1d3f9ae9169"}, - {file = "fonttools-4.53.1-cp38-cp38-win32.whl", hash = "sha256:f08df60fbd8d289152079a65da4e66a447efc1d5d5a4d3f299cdd39e3b2e4a7d"}, - {file = "fonttools-4.53.1-cp38-cp38-win_amd64.whl", hash = "sha256:7b6b35e52ddc8fb0db562133894e6ef5b4e54e1283dff606fda3eed938c36fc8"}, - {file = "fonttools-4.53.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:75a157d8d26c06e64ace9df037ee93a4938a4606a38cb7ffaf6635e60e253b7a"}, - {file = "fonttools-4.53.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4824c198f714ab5559c5be10fd1adf876712aa7989882a4ec887bf1ef3e00e31"}, - {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:becc5d7cb89c7b7afa8321b6bb3dbee0eec2b57855c90b3e9bf5fb816671fa7c"}, - {file = "fonttools-4.53.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84ec3fb43befb54be490147b4a922b5314e16372a643004f182babee9f9c3407"}, - {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:73379d3ffdeecb376640cd8ed03e9d2d0e568c9d1a4e9b16504a834ebadc2dfb"}, - {file = "fonttools-4.53.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:02569e9a810f9d11f4ae82c391ebc6fb5730d95a0657d24d754ed7763fb2d122"}, - {file = "fonttools-4.53.1-cp39-cp39-win32.whl", hash = "sha256:aae7bd54187e8bf7fd69f8ab87b2885253d3575163ad4d669a262fe97f0136cb"}, - {file = "fonttools-4.53.1-cp39-cp39-win_amd64.whl", hash = "sha256:e5b708073ea3d684235648786f5f6153a48dc8762cdfe5563c57e80787c29fbb"}, - {file = "fonttools-4.53.1-py3-none-any.whl", hash = "sha256:f1f8758a2ad110bd6432203a344269f445a2907dc24ef6bccfd0ac4e14e0d71d"}, - {file = "fonttools-4.53.1.tar.gz", hash = "sha256:e128778a8e9bc11159ce5447f76766cefbd876f44bd79aff030287254e4752c4"}, + {file = "fonttools-4.55.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1dcc07934a2165ccdc3a5a608db56fb3c24b609658a5b340aee4ecf3ba679dc0"}, + {file = "fonttools-4.55.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f7d66c15ba875432a2d2fb419523f5d3d347f91f48f57b8b08a2dfc3c39b8a3f"}, + {file = "fonttools-4.55.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27e4ae3592e62eba83cd2c4ccd9462dcfa603ff78e09110680a5444c6925d841"}, + {file = "fonttools-4.55.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62d65a3022c35e404d19ca14f291c89cc5890032ff04f6c17af0bd1927299674"}, + {file = "fonttools-4.55.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d342e88764fb201286d185093781bf6628bbe380a913c24adf772d901baa8276"}, + {file = "fonttools-4.55.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:dd68c87a2bfe37c5b33bcda0fba39b65a353876d3b9006fde3adae31f97b3ef5"}, + {file = "fonttools-4.55.3-cp310-cp310-win32.whl", hash = "sha256:1bc7ad24ff98846282eef1cbeac05d013c2154f977a79886bb943015d2b1b261"}, + {file = "fonttools-4.55.3-cp310-cp310-win_amd64.whl", hash = "sha256:b54baf65c52952db65df39fcd4820668d0ef4766c0ccdf32879b77f7c804d5c5"}, + {file = "fonttools-4.55.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8c4491699bad88efe95772543cd49870cf756b019ad56294f6498982408ab03e"}, + {file = "fonttools-4.55.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5323a22eabddf4b24f66d26894f1229261021dacd9d29e89f7872dd8c63f0b8b"}, + {file = "fonttools-4.55.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5480673f599ad410695ca2ddef2dfefe9df779a9a5cda89503881e503c9c7d90"}, + {file = "fonttools-4.55.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da9da6d65cd7aa6b0f806556f4985bcbf603bf0c5c590e61b43aa3e5a0f822d0"}, + {file = "fonttools-4.55.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e894b5bd60d9f473bed7a8f506515549cc194de08064d829464088d23097331b"}, + {file = "fonttools-4.55.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:aee3b57643827e237ff6ec6d28d9ff9766bd8b21e08cd13bff479e13d4b14765"}, + {file = "fonttools-4.55.3-cp311-cp311-win32.whl", hash = "sha256:eb6ca911c4c17eb51853143624d8dc87cdcdf12a711fc38bf5bd21521e79715f"}, + {file = "fonttools-4.55.3-cp311-cp311-win_amd64.whl", hash = "sha256:6314bf82c54c53c71805318fcf6786d986461622dd926d92a465199ff54b1b72"}, + {file = "fonttools-4.55.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f9e736f60f4911061235603a6119e72053073a12c6d7904011df2d8fad2c0e35"}, + {file = "fonttools-4.55.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7a8aa2c5e5b8b3bcb2e4538d929f6589a5c6bdb84fd16e2ed92649fb5454f11c"}, + {file = "fonttools-4.55.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07f8288aacf0a38d174445fc78377a97fb0b83cfe352a90c9d9c1400571963c7"}, + {file = "fonttools-4.55.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8d5e8916c0970fbc0f6f1bece0063363bb5857a7f170121a4493e31c3db3314"}, + {file = "fonttools-4.55.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ae3b6600565b2d80b7c05acb8e24d2b26ac407b27a3f2e078229721ba5698427"}, + {file = "fonttools-4.55.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:54153c49913f45065c8d9e6d0c101396725c5621c8aee744719300f79771d75a"}, + {file = "fonttools-4.55.3-cp312-cp312-win32.whl", hash = "sha256:827e95fdbbd3e51f8b459af5ea10ecb4e30af50221ca103bea68218e9615de07"}, + {file = "fonttools-4.55.3-cp312-cp312-win_amd64.whl", hash = "sha256:e6e8766eeeb2de759e862004aa11a9ea3d6f6d5ec710551a88b476192b64fd54"}, + {file = "fonttools-4.55.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a430178ad3e650e695167cb53242dae3477b35c95bef6525b074d87493c4bf29"}, + {file = "fonttools-4.55.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:529cef2ce91dc44f8e407cc567fae6e49a1786f2fefefa73a294704c415322a4"}, + {file = "fonttools-4.55.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e75f12c82127486fac2d8bfbf5bf058202f54bf4f158d367e41647b972342ca"}, + {file = "fonttools-4.55.3-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:859c358ebf41db18fb72342d3080bce67c02b39e86b9fbcf1610cca14984841b"}, + {file = "fonttools-4.55.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:546565028e244a701f73df6d8dd6be489d01617863ec0c6a42fa25bf45d43048"}, + {file = "fonttools-4.55.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:aca318b77f23523309eec4475d1fbbb00a6b133eb766a8bdc401faba91261abe"}, + {file = "fonttools-4.55.3-cp313-cp313-win32.whl", hash = "sha256:8c5ec45428edaa7022f1c949a632a6f298edc7b481312fc7dc258921e9399628"}, + {file = "fonttools-4.55.3-cp313-cp313-win_amd64.whl", hash = "sha256:11e5de1ee0d95af4ae23c1a138b184b7f06e0b6abacabf1d0db41c90b03d834b"}, + {file = "fonttools-4.55.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:caf8230f3e10f8f5d7593eb6d252a37caf58c480b19a17e250a63dad63834cf3"}, + {file = "fonttools-4.55.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b586ab5b15b6097f2fb71cafa3c98edfd0dba1ad8027229e7b1e204a58b0e09d"}, + {file = "fonttools-4.55.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a8c2794ded89399cc2169c4d0bf7941247b8d5932b2659e09834adfbb01589aa"}, + {file = "fonttools-4.55.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf4fe7c124aa3f4e4c1940880156e13f2f4d98170d35c749e6b4f119a872551e"}, + {file = "fonttools-4.55.3-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:86721fbc389ef5cc1e2f477019e5069e8e4421e8d9576e9c26f840dbb04678de"}, + {file = "fonttools-4.55.3-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:89bdc5d88bdeec1b15af790810e267e8332d92561dce4f0748c2b95c9bdf3926"}, + {file = "fonttools-4.55.3-cp38-cp38-win32.whl", hash = "sha256:bc5dbb4685e51235ef487e4bd501ddfc49be5aede5e40f4cefcccabc6e60fb4b"}, + {file = "fonttools-4.55.3-cp38-cp38-win_amd64.whl", hash = "sha256:cd70de1a52a8ee2d1877b6293af8a2484ac82514f10b1c67c1c5762d38073e56"}, + {file = "fonttools-4.55.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bdcc9f04b36c6c20978d3f060e5323a43f6222accc4e7fcbef3f428e216d96af"}, + {file = "fonttools-4.55.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c3ca99e0d460eff46e033cd3992a969658c3169ffcd533e0a39c63a38beb6831"}, + {file = "fonttools-4.55.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22f38464daa6cdb7b6aebd14ab06609328fe1e9705bb0fcc7d1e69de7109ee02"}, + {file = "fonttools-4.55.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed63959d00b61959b035c7d47f9313c2c1ece090ff63afea702fe86de00dbed4"}, + {file = "fonttools-4.55.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:5e8d657cd7326eeaba27de2740e847c6b39dde2f8d7cd7cc56f6aad404ddf0bd"}, + {file = "fonttools-4.55.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:fb594b5a99943042c702c550d5494bdd7577f6ef19b0bc73877c948a63184a32"}, + {file = "fonttools-4.55.3-cp39-cp39-win32.whl", hash = "sha256:dc5294a3d5c84226e3dbba1b6f61d7ad813a8c0238fceea4e09aa04848c3d851"}, + {file = "fonttools-4.55.3-cp39-cp39-win_amd64.whl", hash = "sha256:aedbeb1db64496d098e6be92b2e63b5fac4e53b1b92032dfc6988e1ea9134a4d"}, + {file = "fonttools-4.55.3-py3-none-any.whl", hash = "sha256:f412604ccbeee81b091b420272841e5ec5ef68967a9790e80bffd0e30b8e2977"}, + {file = "fonttools-4.55.3.tar.gz", hash = "sha256:3983313c2a04d6cc1fe9251f8fc647754cf49a61dac6cb1e7249ae67afaafc45"}, ] [package.extras] @@ -864,15 +864,18 @@ tests = ["freezegun", "pytest", "pytest-cov"] [[package]] name = "idna" -version = "3.8" +version = "3.10" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.6" files = [ - {file = "idna-3.8-py3-none-any.whl", hash = "sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac"}, - {file = "idna-3.8.tar.gz", hash = "sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603"}, + {file = "idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"}, + {file = "idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9"}, ] +[package.extras] +all = ["flake8 (>=7.1.1)", "mypy (>=1.11.2)", "pytest (>=8.3.2)", "ruff (>=0.6.2)"] + [[package]] name = "ipykernel" version = "6.29.5" @@ -908,13 +911,13 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio [[package]] name = "ipython" -version = "8.27.0" +version = "8.31.0" description = "IPython: Productive Interactive Computing" optional = false python-versions = ">=3.10" files = [ - {file = "ipython-8.27.0-py3-none-any.whl", hash = "sha256:f68b3cb8bde357a5d7adc9598d57e22a45dfbea19eb6b98286fa3b288c9cd55c"}, - {file = "ipython-8.27.0.tar.gz", hash = "sha256:0b99a2dc9f15fd68692e898e5568725c6d49c527d36a9fb5960ffbdeaa82ff7e"}, + {file = "ipython-8.31.0-py3-none-any.whl", hash = "sha256:46ec58f8d3d076a61d128fe517a51eb730e3aaf0c184ea8c17d16e366660c6a6"}, + {file = "ipython-8.31.0.tar.gz", hash = "sha256:b6a2274606bec6166405ff05e54932ed6e5cfecaca1fc05f2cacde7bb074d70b"}, ] [package.dependencies] @@ -924,16 +927,16 @@ exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\" and sys_platform != \"emscripten\""} -prompt-toolkit = ">=3.0.41,<3.1.0" +prompt_toolkit = ">=3.0.41,<3.1.0" pygments = ">=2.4.0" -stack-data = "*" +stack_data = "*" traitlets = ">=5.13.0" -typing-extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} +typing_extensions = {version = ">=4.6", markers = "python_version < \"3.12\""} [package.extras] all = ["ipython[black,doc,kernel,matplotlib,nbconvert,nbformat,notebook,parallel,qtconsole]", "ipython[test,test-extra]"] black = ["black"] -doc = ["docrepr", "exceptiongroup", "intersphinx-registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing-extensions"] +doc = ["docrepr", "exceptiongroup", "intersphinx_registry", "ipykernel", "ipython[test]", "matplotlib", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "sphinxcontrib-jquery", "tomli", "typing_extensions"] kernel = ["ipykernel"] matplotlib = ["matplotlib"] nbconvert = ["nbconvert"] @@ -967,22 +970,22 @@ test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] [[package]] name = "jedi" -version = "0.19.1" +version = "0.19.2" description = "An autocompletion tool for Python that can be used for text editors." optional = false python-versions = ">=3.6" files = [ - {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, - {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, + {file = "jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9"}, + {file = "jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0"}, ] [package.dependencies] -parso = ">=0.8.3,<0.9.0" +parso = ">=0.8.4,<0.9.0" [package.extras] docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] +testing = ["Django", "attrs", "colorama", "docopt", "pytest (<9.0.0)"] [[package]] name = "jinja2" @@ -1104,13 +1107,13 @@ tzlocal = ">=1.2" [[package]] name = "jupyter-client" -version = "8.6.2" +version = "8.6.3" 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"}, + {file = "jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f"}, + {file = "jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419"}, ] [package.dependencies] @@ -1157,125 +1160,101 @@ files = [ [[package]] name = "kiwisolver" -version = "1.4.5" +version = "1.4.8" description = "A fast implementation of the Cassowary constraint solver" optional = false -python-versions = ">=3.7" +python-versions = ">=3.10" files = [ - {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:05703cf211d585109fcd72207a31bb170a0f22144d68298dc5e61b3c946518af"}, - {file = "kiwisolver-1.4.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:146d14bebb7f1dc4d5fbf74f8a6cb15ac42baadee8912eb84ac0b3b2a3dc6ac3"}, - {file = "kiwisolver-1.4.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ef7afcd2d281494c0a9101d5c571970708ad911d028137cd558f02b851c08b4"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9eaa8b117dc8337728e834b9c6e2611f10c79e38f65157c4c38e9400286f5cb1"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec20916e7b4cbfb1f12380e46486ec4bcbaa91a9c448b97023fde0d5bbf9e4ff"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39b42c68602539407884cf70d6a480a469b93b81b7701378ba5e2328660c847a"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa12042de0171fad672b6c59df69106d20d5596e4f87b5e8f76df757a7c399aa"}, - {file = "kiwisolver-1.4.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a40773c71d7ccdd3798f6489aaac9eee213d566850a9533f8d26332d626b82c"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:19df6e621f6d8b4b9c4d45f40a66839294ff2bb235e64d2178f7522d9170ac5b"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:83d78376d0d4fd884e2c114d0621624b73d2aba4e2788182d286309ebdeed770"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e391b1f0a8a5a10ab3b9bb6afcfd74f2175f24f8975fb87ecae700d1503cdee0"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:852542f9481f4a62dbb5dd99e8ab7aedfeb8fb6342349a181d4036877410f525"}, - {file = "kiwisolver-1.4.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59edc41b24031bc25108e210c0def6f6c2191210492a972d585a06ff246bb79b"}, - {file = "kiwisolver-1.4.5-cp310-cp310-win32.whl", hash = "sha256:a6aa6315319a052b4ee378aa171959c898a6183f15c1e541821c5c59beaa0238"}, - {file = "kiwisolver-1.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:d0ef46024e6a3d79c01ff13801cb19d0cad7fd859b15037aec74315540acc276"}, - {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:11863aa14a51fd6ec28688d76f1735f8f69ab1fabf388851a595d0721af042f5"}, - {file = "kiwisolver-1.4.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ab3919a9997ab7ef2fbbed0cc99bb28d3c13e6d4b1ad36e97e482558a91be90"}, - {file = "kiwisolver-1.4.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fcc700eadbbccbf6bc1bcb9dbe0786b4b1cb91ca0dcda336eef5c2beed37b797"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dfdd7c0b105af050eb3d64997809dc21da247cf44e63dc73ff0fd20b96be55a9"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76c6a5964640638cdeaa0c359382e5703e9293030fe730018ca06bc2010c4437"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbea0db94288e29afcc4c28afbf3a7ccaf2d7e027489c449cf7e8f83c6346eb9"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ceec1a6bc6cab1d6ff5d06592a91a692f90ec7505d6463a88a52cc0eb58545da"}, - {file = "kiwisolver-1.4.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:040c1aebeda72197ef477a906782b5ab0d387642e93bda547336b8957c61022e"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f91de7223d4c7b793867797bacd1ee53bfe7359bd70d27b7b58a04efbb9436c8"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:faae4860798c31530dd184046a900e652c95513796ef51a12bc086710c2eec4d"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b0157420efcb803e71d1b28e2c287518b8808b7cf1ab8af36718fd0a2c453eb0"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:06f54715b7737c2fecdbf140d1afb11a33d59508a47bf11bb38ecf21dc9ab79f"}, - {file = "kiwisolver-1.4.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fdb7adb641a0d13bdcd4ef48e062363d8a9ad4a182ac7647ec88f695e719ae9f"}, - {file = "kiwisolver-1.4.5-cp311-cp311-win32.whl", hash = "sha256:bb86433b1cfe686da83ce32a9d3a8dd308e85c76b60896d58f082136f10bffac"}, - {file = "kiwisolver-1.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:6c08e1312a9cf1074d17b17728d3dfce2a5125b2d791527f33ffbe805200a355"}, - {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:32d5cf40c4f7c7b3ca500f8985eb3fb3a7dfc023215e876f207956b5ea26632a"}, - {file = "kiwisolver-1.4.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f846c260f483d1fd217fe5ed7c173fb109efa6b1fc8381c8b7552c5781756192"}, - {file = "kiwisolver-1.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5ff5cf3571589b6d13bfbfd6bcd7a3f659e42f96b5fd1c4830c4cf21d4f5ef45"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7269d9e5f1084a653d575c7ec012ff57f0c042258bf5db0954bf551c158466e7"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da802a19d6e15dffe4b0c24b38b3af68e6c1a68e6e1d8f30148c83864f3881db"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3aba7311af82e335dd1e36ffff68aaca609ca6290c2cb6d821a39aa075d8e3ff"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:763773d53f07244148ccac5b084da5adb90bfaee39c197554f01b286cf869228"}, - {file = "kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2270953c0d8cdab5d422bee7d2007f043473f9d2999631c86a223c9db56cbd16"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d099e745a512f7e3bbe7249ca835f4d357c586d78d79ae8f1dcd4d8adeb9bda9"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:74db36e14a7d1ce0986fa104f7d5637aea5c82ca6326ed0ec5694280942d1162"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:7e5bab140c309cb3a6ce373a9e71eb7e4873c70c2dda01df6820474f9889d6d4"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0f114aa76dc1b8f636d077979c0ac22e7cd8f3493abbab152f20eb8d3cda71f3"}, - {file = "kiwisolver-1.4.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:88a2df29d4724b9237fc0c6eaf2a1adae0cdc0b3e9f4d8e7dc54b16812d2d81a"}, - {file = "kiwisolver-1.4.5-cp312-cp312-win32.whl", hash = "sha256:72d40b33e834371fd330fb1472ca19d9b8327acb79a5821d4008391db8e29f20"}, - {file = "kiwisolver-1.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:2c5674c4e74d939b9d91dda0fae10597ac7521768fec9e399c70a1f27e2ea2d9"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:3a2b053a0ab7a3960c98725cfb0bf5b48ba82f64ec95fe06f1d06c99b552e130"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3cd32d6c13807e5c66a7cbb79f90b553642f296ae4518a60d8d76243b0ad2898"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59ec7b7c7e1a61061850d53aaf8e93db63dce0c936db1fda2658b70e4a1be709"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da4cfb373035def307905d05041c1d06d8936452fe89d464743ae7fb8371078b"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2400873bccc260b6ae184b2b8a4fec0e4082d30648eadb7c3d9a13405d861e89"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:1b04139c4236a0f3aff534479b58f6f849a8b351e1314826c2d230849ed48985"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:4e66e81a5779b65ac21764c295087de82235597a2293d18d943f8e9e32746265"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:7931d8f1f67c4be9ba1dd9c451fb0eeca1a25b89e4d3f89e828fe12a519b782a"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b3f7e75f3015df442238cca659f8baa5f42ce2a8582727981cbfa15fee0ee205"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:bbf1d63eef84b2e8c89011b7f2235b1e0bf7dacc11cac9431fc6468e99ac77fb"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:4c380469bd3f970ef677bf2bcba2b6b0b4d5c75e7a020fb863ef75084efad66f"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-win32.whl", hash = "sha256:9408acf3270c4b6baad483865191e3e582b638b1654a007c62e3efe96f09a9a3"}, - {file = "kiwisolver-1.4.5-cp37-cp37m-win_amd64.whl", hash = "sha256:5b94529f9b2591b7af5f3e0e730a4e0a41ea174af35a4fd067775f9bdfeee01a"}, - {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:11c7de8f692fc99816e8ac50d1d1aef4f75126eefc33ac79aac02c099fd3db71"}, - {file = "kiwisolver-1.4.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:53abb58632235cd154176ced1ae8f0d29a6657aa1aa9decf50b899b755bc2b93"}, - {file = "kiwisolver-1.4.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:88b9f257ca61b838b6f8094a62418421f87ac2a1069f7e896c36a7d86b5d4c29"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3195782b26fc03aa9c6913d5bad5aeb864bdc372924c093b0f1cebad603dd712"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fc579bf0f502e54926519451b920e875f433aceb4624a3646b3252b5caa9e0b6"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a580c91d686376f0f7c295357595c5a026e6cbc3d77b7c36e290201e7c11ecb"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:cfe6ab8da05c01ba6fbea630377b5da2cd9bcbc6338510116b01c1bc939a2c18"}, - {file = "kiwisolver-1.4.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:d2e5a98f0ec99beb3c10e13b387f8db39106d53993f498b295f0c914328b1333"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:a51a263952b1429e429ff236d2f5a21c5125437861baeed77f5e1cc2d2c7c6da"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3edd2fa14e68c9be82c5b16689e8d63d89fe927e56debd6e1dbce7a26a17f81b"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:74d1b44c6cfc897df648cc9fdaa09bc3e7679926e6f96df05775d4fb3946571c"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:76d9289ed3f7501012e05abb8358bbb129149dbd173f1f57a1bf1c22d19ab7cc"}, - {file = "kiwisolver-1.4.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:92dea1ffe3714fa8eb6a314d2b3c773208d865a0e0d35e713ec54eea08a66250"}, - {file = "kiwisolver-1.4.5-cp38-cp38-win32.whl", hash = "sha256:5c90ae8c8d32e472be041e76f9d2f2dbff4d0b0be8bd4041770eddb18cf49a4e"}, - {file = "kiwisolver-1.4.5-cp38-cp38-win_amd64.whl", hash = "sha256:c7940c1dc63eb37a67721b10d703247552416f719c4188c54e04334321351ced"}, - {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9407b6a5f0d675e8a827ad8742e1d6b49d9c1a1da5d952a67d50ef5f4170b18d"}, - {file = "kiwisolver-1.4.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:15568384086b6df3c65353820a4473575dbad192e35010f622c6ce3eebd57af9"}, - {file = "kiwisolver-1.4.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0dc9db8e79f0036e8173c466d21ef18e1befc02de8bf8aa8dc0813a6dc8a7046"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cdc8a402aaee9a798b50d8b827d7ecf75edc5fb35ea0f91f213ff927c15f4ff0"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6c3bd3cde54cafb87d74d8db50b909705c62b17c2099b8f2e25b461882e544ff"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:955e8513d07a283056b1396e9a57ceddbd272d9252c14f154d450d227606eb54"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:346f5343b9e3f00b8db8ba359350eb124b98c99efd0b408728ac6ebf38173958"}, - {file = "kiwisolver-1.4.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b9098e0049e88c6a24ff64545cdfc50807818ba6c1b739cae221bbbcbc58aad3"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:00bd361b903dc4bbf4eb165f24d1acbee754fce22ded24c3d56eec268658a5cf"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7b8b454bac16428b22560d0a1cf0a09875339cab69df61d7805bf48919415901"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f1d072c2eb0ad60d4c183f3fb44ac6f73fb7a8f16a2694a91f988275cbf352f9"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:31a82d498054cac9f6d0b53d02bb85811185bcb477d4b60144f915f3b3126342"}, - {file = "kiwisolver-1.4.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6512cb89e334e4700febbffaaa52761b65b4f5a3cf33f960213d5656cea36a77"}, - {file = "kiwisolver-1.4.5-cp39-cp39-win32.whl", hash = "sha256:9db8ea4c388fdb0f780fe91346fd438657ea602d58348753d9fb265ce1bca67f"}, - {file = "kiwisolver-1.4.5-cp39-cp39-win_amd64.whl", hash = "sha256:59415f46a37f7f2efeec758353dd2eae1b07640d8ca0f0c42548ec4125492635"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5c7b3b3a728dc6faf3fc372ef24f21d1e3cee2ac3e9596691d746e5a536de920"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:620ced262a86244e2be10a676b646f29c34537d0d9cc8eb26c08f53d98013390"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:378a214a1e3bbf5ac4a8708304318b4f890da88c9e6a07699c4ae7174c09a68d"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaf7be1207676ac608a50cd08f102f6742dbfc70e8d60c4db1c6897f62f71523"}, - {file = "kiwisolver-1.4.5-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ba55dce0a9b8ff59495ddd050a0225d58bd0983d09f87cfe2b6aec4f2c1234e4"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:fd32ea360bcbb92d28933fc05ed09bffcb1704ba3fc7942e81db0fd4f81a7892"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5e7139af55d1688f8b960ee9ad5adafc4ac17c1c473fe07133ac092310d76544"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dced8146011d2bc2e883f9bd68618b8247387f4bbec46d7392b3c3b032640126"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9bf3325c47b11b2e51bca0824ea217c7cd84491d8ac4eefd1e409705ef092bd"}, - {file = "kiwisolver-1.4.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5794cf59533bc3f1b1c821f7206a3617999db9fbefc345360aafe2e067514929"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e368f200bbc2e4f905b8e71eb38b3c04333bddaa6a2464a6355487b02bb7fb09"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5d706eba36b4c4d5bc6c6377bb6568098765e990cfc21ee16d13963fab7b3e7"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85267bd1aa8880a9c88a8cb71e18d3d64d2751a790e6ca6c27b8ccc724bcd5ad"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:210ef2c3a1f03272649aff1ef992df2e724748918c4bc2d5a90352849eb40bea"}, - {file = "kiwisolver-1.4.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:11d011a7574eb3b82bcc9c1a1d35c1d7075677fdd15de527d91b46bd35e935ee"}, - {file = "kiwisolver-1.4.5.tar.gz", hash = "sha256:e57e563a57fb22a142da34f38acc2fc1a5c864bc29ca1517a88abc963e60d6ec"}, + {file = "kiwisolver-1.4.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88c6f252f6816a73b1f8c904f7bbe02fd67c09a69f7cb8a0eecdbf5ce78e63db"}, + {file = "kiwisolver-1.4.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72941acb7b67138f35b879bbe85be0f6c6a70cab78fe3ef6db9c024d9223e5b"}, + {file = "kiwisolver-1.4.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce2cf1e5688edcb727fdf7cd1bbd0b6416758996826a8be1d958f91880d0809d"}, + {file = "kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c8bf637892dc6e6aad2bc6d4d69d08764166e5e3f69d469e55427b6ac001b19d"}, + {file = "kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:034d2c891f76bd3edbdb3ea11140d8510dca675443da7304205a2eaa45d8334c"}, + {file = "kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47b28d1dfe0793d5e96bce90835e17edf9a499b53969b03c6c47ea5985844c3"}, + {file = "kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb158fe28ca0c29f2260cca8c43005329ad58452c36f0edf298204de32a9a3ed"}, + {file = "kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5536185fce131780ebd809f8e623bf4030ce1b161353166c49a3c74c287897f"}, + {file = "kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:369b75d40abedc1da2c1f4de13f3482cb99e3237b38726710f4a793432b1c5ff"}, + {file = "kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:641f2ddf9358c80faa22e22eb4c9f54bd3f0e442e038728f500e3b978d00aa7d"}, + {file = "kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d561d2d8883e0819445cfe58d7ddd673e4015c3c57261d7bdcd3710d0d14005c"}, + {file = "kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1732e065704b47c9afca7ffa272f845300a4eb959276bf6970dc07265e73b605"}, + {file = "kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bcb1ebc3547619c3b58a39e2448af089ea2ef44b37988caf432447374941574e"}, + {file = "kiwisolver-1.4.8-cp310-cp310-win_amd64.whl", hash = "sha256:89c107041f7b27844179ea9c85d6da275aa55ecf28413e87624d033cf1f6b751"}, + {file = "kiwisolver-1.4.8-cp310-cp310-win_arm64.whl", hash = "sha256:b5773efa2be9eb9fcf5415ea3ab70fc785d598729fd6057bea38d539ead28271"}, + {file = "kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84"}, + {file = "kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561"}, + {file = "kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7"}, + {file = "kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03"}, + {file = "kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954"}, + {file = "kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79"}, + {file = "kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6"}, + {file = "kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0"}, + {file = "kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab"}, + {file = "kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc"}, + {file = "kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25"}, + {file = "kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc"}, + {file = "kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67"}, + {file = "kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34"}, + {file = "kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2"}, + {file = "kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502"}, + {file = "kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31"}, + {file = "kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb"}, + {file = "kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f"}, + {file = "kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc"}, + {file = "kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a"}, + {file = "kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a"}, + {file = "kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a"}, + {file = "kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3"}, + {file = "kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b"}, + {file = "kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4"}, + {file = "kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d"}, + {file = "kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8"}, + {file = "kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50"}, + {file = "kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476"}, + {file = "kiwisolver-1.4.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09"}, + {file = "kiwisolver-1.4.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1"}, + {file = "kiwisolver-1.4.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c"}, + {file = "kiwisolver-1.4.8-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b"}, + {file = "kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47"}, + {file = "kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16"}, + {file = "kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc"}, + {file = "kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246"}, + {file = "kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794"}, + {file = "kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b"}, + {file = "kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3"}, + {file = "kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957"}, + {file = "kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb"}, + {file = "kiwisolver-1.4.8-cp313-cp313-win_amd64.whl", hash = "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2"}, + {file = "kiwisolver-1.4.8-cp313-cp313-win_arm64.whl", hash = "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30"}, + {file = "kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c"}, + {file = "kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc"}, + {file = "kiwisolver-1.4.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712"}, + {file = "kiwisolver-1.4.8-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e"}, + {file = "kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880"}, + {file = "kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062"}, + {file = "kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7"}, + {file = "kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed"}, + {file = "kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d"}, + {file = "kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165"}, + {file = "kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6"}, + {file = "kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90"}, + {file = "kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85"}, + {file = "kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e7a019419b7b510f0f7c9dceff8c5eae2392037eae483a7f9162625233802b0a"}, + {file = "kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:286b18e86682fd2217a48fc6be6b0f20c1d0ed10958d8dc53453ad58d7be0bf8"}, + {file = "kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4191ee8dfd0be1c3666ccbac178c5a05d5f8d689bbe3fc92f3c4abec817f8fe0"}, + {file = "kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd2785b9391f2873ad46088ed7599a6a71e762e1ea33e87514b1a441ed1da1c"}, + {file = "kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07b29089b7ba090b6f1a669f1411f27221c3662b3a1b7010e67b59bb5a6f10b"}, + {file = "kiwisolver-1.4.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:65ea09a5a3faadd59c2ce96dc7bf0f364986a315949dc6374f04396b0d60e09b"}, + {file = "kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e"}, ] [[package]] name = "lightnovel-crawler" -version = "3.7.2" +version = "3.7.4" description = "An app to download novels from online sources and generate e-books." optional = false python-versions = ">=3.8" files = [ - {file = "lightnovel_crawler-3.7.2-py3-none-any.whl", hash = "sha256:a2ab5bfd8cf113916668886373d88214b7285298c42c216c29735cdf15a887e1"}, + {file = "lightnovel_crawler-3.7.4-py3-none-any.whl", hash = "sha256:90bd543ac11ded83ed72572daa9858c8689df1161f9a3c5d802040055e3cd6b3"}, ] [package.dependencies] @@ -1307,13 +1286,13 @@ webdriver-manager = "*" [[package]] name = "loguru" -version = "0.7.2" +version = "0.7.3" description = "Python logging made (stupidly) simple" optional = false -python-versions = ">=3.5" +python-versions = "<4.0,>=3.5" files = [ - {file = "loguru-0.7.2-py3-none-any.whl", hash = "sha256:003d71e3d3ed35f0f8984898359d65b79e5b21943f78af86aa5491210429b8eb"}, - {file = "loguru-0.7.2.tar.gz", hash = "sha256:e671a53522515f34fd406340ee968cb9ecafbc4b36c679da03c18fd8d0bd51ac"}, + {file = "loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c"}, + {file = "loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6"}, ] [package.dependencies] @@ -1321,7 +1300,7 @@ colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} [package.extras] -dev = ["Sphinx (==7.2.5)", "colorama (==0.4.5)", "colorama (==0.4.6)", "exceptiongroup (==1.1.3)", "freezegun (==1.1.0)", "freezegun (==1.2.2)", "mypy (==v0.910)", "mypy (==v0.971)", "mypy (==v1.4.1)", "mypy (==v1.5.1)", "pre-commit (==3.4.0)", "pytest (==6.1.2)", "pytest (==7.4.0)", "pytest-cov (==2.12.1)", "pytest-cov (==4.1.0)", "pytest-mypy-plugins (==1.9.3)", "pytest-mypy-plugins (==3.0.0)", "sphinx-autobuild (==2021.3.14)", "sphinx-rtd-theme (==1.3.0)", "tox (==3.27.1)", "tox (==4.11.0)"] +dev = ["Sphinx (==8.1.3)", "build (==1.2.2)", "colorama (==0.4.5)", "colorama (==0.4.6)", "exceptiongroup (==1.1.3)", "freezegun (==1.1.0)", "freezegun (==1.5.0)", "mypy (==v0.910)", "mypy (==v0.971)", "mypy (==v1.13.0)", "mypy (==v1.4.1)", "myst-parser (==4.0.0)", "pre-commit (==4.0.1)", "pytest (==6.1.2)", "pytest (==8.3.2)", "pytest-cov (==2.12.1)", "pytest-cov (==5.0.0)", "pytest-cov (==6.0.0)", "pytest-mypy-plugins (==1.9.3)", "pytest-mypy-plugins (==3.1.0)", "sphinx-rtd-theme (==3.0.2)", "tox (==3.27.1)", "tox (==4.23.2)", "twine (==6.0.1)"] [[package]] name = "lxml" @@ -1518,51 +1497,45 @@ files = [ [[package]] name = "matplotlib" -version = "3.9.2" +version = "3.10.0" description = "Python plotting package" optional = false -python-versions = ">=3.9" +python-versions = ">=3.10" files = [ - {file = "matplotlib-3.9.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:9d78bbc0cbc891ad55b4f39a48c22182e9bdaea7fc0e5dbd364f49f729ca1bbb"}, - {file = "matplotlib-3.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c375cc72229614632c87355366bdf2570c2dac01ac66b8ad048d2dabadf2d0d4"}, - {file = "matplotlib-3.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d94ff717eb2bd0b58fe66380bd8b14ac35f48a98e7c6765117fe67fb7684e64"}, - {file = "matplotlib-3.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab68d50c06938ef28681073327795c5db99bb4666214d2d5f880ed11aeaded66"}, - {file = "matplotlib-3.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:65aacf95b62272d568044531e41de26285d54aec8cb859031f511f84bd8b495a"}, - {file = "matplotlib-3.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:3fd595f34aa8a55b7fc8bf9ebea8aa665a84c82d275190a61118d33fbc82ccae"}, - {file = "matplotlib-3.9.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d8dd059447824eec055e829258ab092b56bb0579fc3164fa09c64f3acd478772"}, - {file = "matplotlib-3.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c797dac8bb9c7a3fd3382b16fe8f215b4cf0f22adccea36f1545a6d7be310b41"}, - {file = "matplotlib-3.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d719465db13267bcef19ea8954a971db03b9f48b4647e3860e4bc8e6ed86610f"}, - {file = "matplotlib-3.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8912ef7c2362f7193b5819d17dae8629b34a95c58603d781329712ada83f9447"}, - {file = "matplotlib-3.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:7741f26a58a240f43bee74965c4882b6c93df3e7eb3de160126d8c8f53a6ae6e"}, - {file = "matplotlib-3.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:ae82a14dab96fbfad7965403c643cafe6515e386de723e498cf3eeb1e0b70cc7"}, - {file = "matplotlib-3.9.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ac43031375a65c3196bee99f6001e7fa5bdfb00ddf43379d3c0609bdca042df9"}, - {file = "matplotlib-3.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:be0fc24a5e4531ae4d8e858a1a548c1fe33b176bb13eff7f9d0d38ce5112a27d"}, - {file = "matplotlib-3.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf81de2926c2db243c9b2cbc3917619a0fc85796c6ba4e58f541df814bbf83c7"}, - {file = "matplotlib-3.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6ee45bc4245533111ced13f1f2cace1e7f89d1c793390392a80c139d6cf0e6c"}, - {file = "matplotlib-3.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:306c8dfc73239f0e72ac50e5a9cf19cc4e8e331dd0c54f5e69ca8758550f1e1e"}, - {file = "matplotlib-3.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:5413401594cfaff0052f9d8b1aafc6d305b4bd7c4331dccd18f561ff7e1d3bd3"}, - {file = "matplotlib-3.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:18128cc08f0d3cfff10b76baa2f296fc28c4607368a8402de61bb3f2eb33c7d9"}, - {file = "matplotlib-3.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4876d7d40219e8ae8bb70f9263bcbe5714415acfdf781086601211335e24f8aa"}, - {file = "matplotlib-3.9.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d9f07a80deab4bb0b82858a9e9ad53d1382fd122be8cde11080f4e7dfedb38b"}, - {file = "matplotlib-3.9.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c0410f181a531ec4e93bbc27692f2c71a15c2da16766f5ba9761e7ae518413"}, - {file = "matplotlib-3.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:909645cce2dc28b735674ce0931a4ac94e12f5b13f6bb0b5a5e65e7cea2c192b"}, - {file = "matplotlib-3.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:f32c7410c7f246838a77d6d1eff0c0f87f3cb0e7c4247aebea71a6d5a68cab49"}, - {file = "matplotlib-3.9.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:37e51dd1c2db16ede9cfd7b5cabdfc818b2c6397c83f8b10e0e797501c963a03"}, - {file = "matplotlib-3.9.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:b82c5045cebcecd8496a4d694d43f9cc84aeeb49fe2133e036b207abe73f4d30"}, - {file = "matplotlib-3.9.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f053c40f94bc51bc03832a41b4f153d83f2062d88c72b5e79997072594e97e51"}, - {file = "matplotlib-3.9.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbe196377a8248972f5cede786d4c5508ed5f5ca4a1e09b44bda889958b33f8c"}, - {file = "matplotlib-3.9.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5816b1e1fe8c192cbc013f8f3e3368ac56fbecf02fb41b8f8559303f24c5015e"}, - {file = "matplotlib-3.9.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:cef2a73d06601437be399908cf13aee74e86932a5ccc6ccdf173408ebc5f6bb2"}, - {file = "matplotlib-3.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e0830e188029c14e891fadd99702fd90d317df294c3298aad682739c5533721a"}, - {file = "matplotlib-3.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03ba9c1299c920964e8d3857ba27173b4dbb51ca4bab47ffc2c2ba0eb5e2cbc5"}, - {file = "matplotlib-3.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1cd93b91ab47a3616b4d3c42b52f8363b88ca021e340804c6ab2536344fad9ca"}, - {file = "matplotlib-3.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6d1ce5ed2aefcdce11904fc5bbea7d9c21fff3d5f543841edf3dea84451a09ea"}, - {file = "matplotlib-3.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:b2696efdc08648536efd4e1601b5fd491fd47f4db97a5fbfd175549a7365c1b2"}, - {file = "matplotlib-3.9.2-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:d52a3b618cb1cbb769ce2ee1dcdb333c3ab6e823944e9a2d36e37253815f9556"}, - {file = "matplotlib-3.9.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:039082812cacd6c6bec8e17a9c1e6baca230d4116d522e81e1f63a74d01d2e21"}, - {file = "matplotlib-3.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6758baae2ed64f2331d4fd19be38b7b4eae3ecec210049a26b6a4f3ae1c85dcc"}, - {file = "matplotlib-3.9.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:050598c2b29e0b9832cde72bcf97627bf00262adbc4a54e2b856426bb2ef0697"}, - {file = "matplotlib-3.9.2.tar.gz", hash = "sha256:96ab43906269ca64a6366934106fa01534454a69e471b7bf3d79083981aaab92"}, + {file = "matplotlib-3.10.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2c5829a5a1dd5a71f0e31e6e8bb449bc0ee9dbfb05ad28fc0c6b55101b3a4be6"}, + {file = "matplotlib-3.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2a43cbefe22d653ab34bb55d42384ed30f611bcbdea1f8d7f431011a2e1c62e"}, + {file = "matplotlib-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:607b16c8a73943df110f99ee2e940b8a1cbf9714b65307c040d422558397dac5"}, + {file = "matplotlib-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01d2b19f13aeec2e759414d3bfe19ddfb16b13a1250add08d46d5ff6f9be83c6"}, + {file = "matplotlib-3.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e6c6461e1fc63df30bf6f80f0b93f5b6784299f721bc28530477acd51bfc3d1"}, + {file = "matplotlib-3.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:994c07b9d9fe8d25951e3202a68c17900679274dadfc1248738dcfa1bd40d7f3"}, + {file = "matplotlib-3.10.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:fd44fc75522f58612ec4a33958a7e5552562b7705b42ef1b4f8c0818e304a363"}, + {file = "matplotlib-3.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c58a9622d5dbeb668f407f35f4e6bfac34bb9ecdcc81680c04d0258169747997"}, + {file = "matplotlib-3.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:845d96568ec873be63f25fa80e9e7fae4be854a66a7e2f0c8ccc99e94a8bd4ef"}, + {file = "matplotlib-3.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5439f4c5a3e2e8eab18e2f8c3ef929772fd5641876db71f08127eed95ab64683"}, + {file = "matplotlib-3.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4673ff67a36152c48ddeaf1135e74ce0d4bce1bbf836ae40ed39c29edf7e2765"}, + {file = "matplotlib-3.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:7e8632baebb058555ac0cde75db885c61f1212e47723d63921879806b40bec6a"}, + {file = "matplotlib-3.10.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4659665bc7c9b58f8c00317c3c2a299f7f258eeae5a5d56b4c64226fca2f7c59"}, + {file = "matplotlib-3.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d44cb942af1693cced2604c33a9abcef6205601c445f6d0dc531d813af8a2f5a"}, + {file = "matplotlib-3.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a994f29e968ca002b50982b27168addfd65f0105610b6be7fa515ca4b5307c95"}, + {file = "matplotlib-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9b0558bae37f154fffda54d779a592bc97ca8b4701f1c710055b609a3bac44c8"}, + {file = "matplotlib-3.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:503feb23bd8c8acc75541548a1d709c059b7184cde26314896e10a9f14df5f12"}, + {file = "matplotlib-3.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:c40ba2eb08b3f5de88152c2333c58cee7edcead0a2a0d60fcafa116b17117adc"}, + {file = "matplotlib-3.10.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96f2886f5c1e466f21cc41b70c5a0cd47bfa0015eb2d5793c88ebce658600e25"}, + {file = "matplotlib-3.10.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:12eaf48463b472c3c0f8dbacdbf906e573013df81a0ab82f0616ea4b11281908"}, + {file = "matplotlib-3.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2fbbabc82fde51391c4da5006f965e36d86d95f6ee83fb594b279564a4c5d0d2"}, + {file = "matplotlib-3.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad2e15300530c1a94c63cfa546e3b7864bd18ea2901317bae8bbf06a5ade6dcf"}, + {file = "matplotlib-3.10.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:3547d153d70233a8496859097ef0312212e2689cdf8d7ed764441c77604095ae"}, + {file = "matplotlib-3.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:c55b20591ced744aa04e8c3e4b7543ea4d650b6c3c4b208c08a05b4010e8b442"}, + {file = "matplotlib-3.10.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9ade1003376731a971e398cc4ef38bb83ee8caf0aee46ac6daa4b0506db1fd06"}, + {file = "matplotlib-3.10.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:95b710fea129c76d30be72c3b38f330269363fbc6e570a5dd43580487380b5ff"}, + {file = "matplotlib-3.10.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cdbaf909887373c3e094b0318d7ff230b2ad9dcb64da7ade654182872ab2593"}, + {file = "matplotlib-3.10.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d907fddb39f923d011875452ff1eca29a9e7f21722b873e90db32e5d8ddff12e"}, + {file = "matplotlib-3.10.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3b427392354d10975c1d0f4ee18aa5844640b512d5311ef32efd4dd7db106ede"}, + {file = "matplotlib-3.10.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5fd41b0ec7ee45cd960a8e71aea7c946a28a0b8a4dcee47d2856b2af051f334c"}, + {file = "matplotlib-3.10.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:81713dd0d103b379de4516b861d964b1d789a144103277769238c732229d7f03"}, + {file = "matplotlib-3.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:359f87baedb1f836ce307f0e850d12bb5f1936f70d035561f90d41d305fdacea"}, + {file = "matplotlib-3.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae80dc3a4add4665cf2faa90138384a7ffe2a4e37c58d83e115b54287c4f06ef"}, + {file = "matplotlib-3.10.0.tar.gz", hash = "sha256:b886d02a581b96704c9d1ffe55709e49b4d2d52709ccebc4be42db856e511278"}, ] [package.dependencies] @@ -1577,7 +1550,7 @@ pyparsing = ">=2.3.1" python-dateutil = ">=2.7" [package.extras] -dev = ["meson-python (>=0.13.1)", "numpy (>=1.25)", "pybind11 (>=2.6)", "setuptools (>=64)", "setuptools_scm (>=7)"] +dev = ["meson-python (>=0.13.1,<0.17.0)", "pybind11 (>=2.13.2,!=2.13.3)", "setuptools (>=64)", "setuptools_scm (>=7)"] [[package]] name = "matplotlib-inline" @@ -1701,51 +1674,64 @@ attrs = ">=19.2.0" [[package]] name = "packaging" -version = "24.1" +version = "24.2" description = "Core utilities for Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124"}, - {file = "packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002"}, + {file = "packaging-24.2-py3-none-any.whl", hash = "sha256:09abb1bccd265c01f4a3aa3f7a7db064b36514d2cba19a2f694fe6150451a759"}, + {file = "packaging-24.2.tar.gz", hash = "sha256:c228a6dc5e932d346bc5739379109d49e8853dd8223571c7c5b55260edc0b97f"}, ] [[package]] name = "pandas" -version = "2.2.2" +version = "2.2.3" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, - {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, - {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, - {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, - {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, - {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, - {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, - {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, - {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, - {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, - {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, - {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, - {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, - {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, - {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, - {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, - {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, - {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, - {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, - {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, - {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, - {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, - {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, - {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, - {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, - {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, - {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, - {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, - {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, + {file = "pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5"}, + {file = "pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348"}, + {file = "pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed"}, + {file = "pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57"}, + {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42"}, + {file = "pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f"}, + {file = "pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645"}, + {file = "pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039"}, + {file = "pandas-2.2.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7c2875855b0ff77b2a64a0365e24455d9990730d6431b9e0ee18ad8acee13dbd"}, + {file = "pandas-2.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cd8d0c3be0515c12fed0bdbae072551c8b54b7192c7b1fda0ba56059a0179698"}, + {file = "pandas-2.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c124333816c3a9b03fbeef3a9f230ba9a737e9e5bb4060aa2107a86cc0a497fc"}, + {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:63cc132e40a2e084cf01adf0775b15ac515ba905d7dcca47e9a251819c575ef3"}, + {file = "pandas-2.2.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:29401dbfa9ad77319367d36940cd8a0b3a11aba16063e39632d98b0e931ddf32"}, + {file = "pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5"}, + {file = "pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9"}, + {file = "pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4"}, + {file = "pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3"}, + {file = "pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319"}, + {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8"}, + {file = "pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a"}, + {file = "pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13"}, + {file = "pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015"}, + {file = "pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28"}, + {file = "pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0"}, + {file = "pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24"}, + {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659"}, + {file = "pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb"}, + {file = "pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d"}, + {file = "pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468"}, + {file = "pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18"}, + {file = "pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2"}, + {file = "pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4"}, + {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d"}, + {file = "pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a"}, + {file = "pandas-2.2.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc6b93f9b966093cb0fd62ff1a7e4c09e6d546ad7c1de191767baffc57628f39"}, + {file = "pandas-2.2.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5dbca4c1acd72e8eeef4753eeca07de9b1db4f398669d5994086f788a5d7cc30"}, + {file = "pandas-2.2.3-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8cd6d7cc958a3910f934ea8dbdf17b2364827bb4dafc38ce6eef6bb3d65ff09c"}, + {file = "pandas-2.2.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:99df71520d25fade9db7c1076ac94eb994f4d2673ef2aa2e86ee039b6746d20c"}, + {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:31d0ced62d4ea3e231a9f228366919a5ea0b07440d9d4dac345376fd8e1477ea"}, + {file = "pandas-2.2.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7eee9e7cea6adf3e3d24e304ac6b8300646e2a5d1cd3a3c2abed9101b0846761"}, + {file = "pandas-2.2.3-cp39-cp39-win_amd64.whl", hash = "sha256:4850ba03528b6dd51d6c5d273c46f183f39a9baf3f0143e566b89450965b105e"}, + {file = "pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667"}, ] [package.dependencies] @@ -1814,95 +1800,90 @@ ptyprocess = ">=0.5" [[package]] name = "pillow" -version = "10.4.0" +version = "11.0.0" description = "Python Imaging Library (Fork)" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "pillow-10.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e"}, - {file = "pillow-10.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b"}, - {file = "pillow-10.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc"}, - {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e"}, - {file = "pillow-10.4.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46"}, - {file = "pillow-10.4.0-cp310-cp310-win32.whl", hash = "sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984"}, - {file = "pillow-10.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141"}, - {file = "pillow-10.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1"}, - {file = "pillow-10.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c"}, - {file = "pillow-10.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe"}, - {file = "pillow-10.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319"}, - {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d"}, - {file = "pillow-10.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696"}, - {file = "pillow-10.4.0-cp311-cp311-win32.whl", hash = "sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496"}, - {file = "pillow-10.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91"}, - {file = "pillow-10.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22"}, - {file = "pillow-10.4.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94"}, - {file = "pillow-10.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef"}, - {file = "pillow-10.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a"}, - {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b"}, - {file = "pillow-10.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9"}, - {file = "pillow-10.4.0-cp312-cp312-win32.whl", hash = "sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42"}, - {file = "pillow-10.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a"}, - {file = "pillow-10.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9"}, - {file = "pillow-10.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3"}, - {file = "pillow-10.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0"}, - {file = "pillow-10.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc"}, - {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a"}, - {file = "pillow-10.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309"}, - {file = "pillow-10.4.0-cp313-cp313-win32.whl", hash = "sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060"}, - {file = "pillow-10.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea"}, - {file = "pillow-10.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d"}, - {file = "pillow-10.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736"}, - {file = "pillow-10.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b"}, - {file = "pillow-10.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd"}, - {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84"}, - {file = "pillow-10.4.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0"}, - {file = "pillow-10.4.0-cp38-cp38-win32.whl", hash = "sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e"}, - {file = "pillow-10.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab"}, - {file = "pillow-10.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d"}, - {file = "pillow-10.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b"}, - {file = "pillow-10.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c"}, - {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1"}, - {file = "pillow-10.4.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df"}, - {file = "pillow-10.4.0-cp39-cp39-win32.whl", hash = "sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef"}, - {file = "pillow-10.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5"}, - {file = "pillow-10.4.0-cp39-cp39-win_arm64.whl", hash = "sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885"}, - {file = "pillow-10.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_10_15_x86_64.whl", hash = "sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27"}, - {file = "pillow-10.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3"}, - {file = "pillow-10.4.0.tar.gz", hash = "sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06"}, + {file = "pillow-11.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:6619654954dc4936fcff82db8eb6401d3159ec6be81e33c6000dfd76ae189947"}, + {file = "pillow-11.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b3c5ac4bed7519088103d9450a1107f76308ecf91d6dabc8a33a2fcfb18d0fba"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a65149d8ada1055029fcb665452b2814fe7d7082fcb0c5bed6db851cb69b2086"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88a58d8ac0cc0e7f3a014509f0455248a76629ca9b604eca7dc5927cc593c5e9"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:c26845094b1af3c91852745ae78e3ea47abf3dbcd1cf962f16b9a5fbe3ee8488"}, + {file = "pillow-11.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:1a61b54f87ab5786b8479f81c4b11f4d61702830354520837f8cc791ebba0f5f"}, + {file = "pillow-11.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:674629ff60030d144b7bca2b8330225a9b11c482ed408813924619c6f302fdbb"}, + {file = "pillow-11.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:598b4e238f13276e0008299bd2482003f48158e2b11826862b1eb2ad7c768b97"}, + {file = "pillow-11.0.0-cp310-cp310-win32.whl", hash = "sha256:9a0f748eaa434a41fccf8e1ee7a3eed68af1b690e75328fd7a60af123c193b50"}, + {file = "pillow-11.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:a5629742881bcbc1f42e840af185fd4d83a5edeb96475a575f4da50d6ede337c"}, + {file = "pillow-11.0.0-cp310-cp310-win_arm64.whl", hash = "sha256:ee217c198f2e41f184f3869f3e485557296d505b5195c513b2bfe0062dc537f1"}, + {file = "pillow-11.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:1c1d72714f429a521d8d2d018badc42414c3077eb187a59579f28e4270b4b0fc"}, + {file = "pillow-11.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:499c3a1b0d6fc8213519e193796eb1a86a1be4b1877d678b30f83fd979811d1a"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c8b2351c85d855293a299038e1f89db92a2f35e8d2f783489c6f0b2b5f3fe8a3"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f4dba50cfa56f910241eb7f883c20f1e7b1d8f7d91c750cd0b318bad443f4d5"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:5ddbfd761ee00c12ee1be86c9c0683ecf5bb14c9772ddbd782085779a63dd55b"}, + {file = "pillow-11.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:45c566eb10b8967d71bf1ab8e4a525e5a93519e29ea071459ce517f6b903d7fa"}, + {file = "pillow-11.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b4fd7bd29610a83a8c9b564d457cf5bd92b4e11e79a4ee4716a63c959699b306"}, + {file = "pillow-11.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:cb929ca942d0ec4fac404cbf520ee6cac37bf35be479b970c4ffadf2b6a1cad9"}, + {file = "pillow-11.0.0-cp311-cp311-win32.whl", hash = "sha256:006bcdd307cc47ba43e924099a038cbf9591062e6c50e570819743f5607404f5"}, + {file = "pillow-11.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:52a2d8323a465f84faaba5236567d212c3668f2ab53e1c74c15583cf507a0291"}, + {file = "pillow-11.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:16095692a253047fe3ec028e951fa4221a1f3ed3d80c397e83541a3037ff67c9"}, + {file = "pillow-11.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d2c0a187a92a1cb5ef2c8ed5412dd8d4334272617f532d4ad4de31e0495bd923"}, + {file = "pillow-11.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:084a07ef0821cfe4858fe86652fffac8e187b6ae677e9906e192aafcc1b69903"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8069c5179902dcdce0be9bfc8235347fdbac249d23bd90514b7a47a72d9fecf4"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f02541ef64077f22bf4924f225c0fd1248c168f86e4b7abdedd87d6ebaceab0f"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:fcb4621042ac4b7865c179bb972ed0da0218a076dc1820ffc48b1d74c1e37fe9"}, + {file = "pillow-11.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:00177a63030d612148e659b55ba99527803288cea7c75fb05766ab7981a8c1b7"}, + {file = "pillow-11.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8853a3bf12afddfdf15f57c4b02d7ded92c7a75a5d7331d19f4f9572a89c17e6"}, + {file = "pillow-11.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3107c66e43bda25359d5ef446f59c497de2b5ed4c7fdba0894f8d6cf3822dafc"}, + {file = "pillow-11.0.0-cp312-cp312-win32.whl", hash = "sha256:86510e3f5eca0ab87429dd77fafc04693195eec7fd6a137c389c3eeb4cfb77c6"}, + {file = "pillow-11.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:8ec4a89295cd6cd4d1058a5e6aec6bf51e0eaaf9714774e1bfac7cfc9051db47"}, + {file = "pillow-11.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:27a7860107500d813fcd203b4ea19b04babe79448268403172782754870dac25"}, + {file = "pillow-11.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bcd1fb5bb7b07f64c15618c89efcc2cfa3e95f0e3bcdbaf4642509de1942a699"}, + {file = "pillow-11.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0e038b0745997c7dcaae350d35859c9715c71e92ffb7e0f4a8e8a16732150f38"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ae08bd8ffc41aebf578c2af2f9d8749d91f448b3bfd41d7d9ff573d74f2a6b2"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d69bfd8ec3219ae71bcde1f942b728903cad25fafe3100ba2258b973bd2bc1b2"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:61b887f9ddba63ddf62fd02a3ba7add935d053b6dd7d58998c630e6dbade8527"}, + {file = "pillow-11.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:c6a660307ca9d4867caa8d9ca2c2658ab685de83792d1876274991adec7b93fa"}, + {file = "pillow-11.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:73e3a0200cdda995c7e43dd47436c1548f87a30bb27fb871f352a22ab8dcf45f"}, + {file = "pillow-11.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fba162b8872d30fea8c52b258a542c5dfd7b235fb5cb352240c8d63b414013eb"}, + {file = "pillow-11.0.0-cp313-cp313-win32.whl", hash = "sha256:f1b82c27e89fffc6da125d5eb0ca6e68017faf5efc078128cfaa42cf5cb38798"}, + {file = "pillow-11.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:8ba470552b48e5835f1d23ecb936bb7f71d206f9dfeee64245f30c3270b994de"}, + {file = "pillow-11.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:846e193e103b41e984ac921b335df59195356ce3f71dcfd155aa79c603873b84"}, + {file = "pillow-11.0.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4ad70c4214f67d7466bea6a08061eba35c01b1b89eaa098040a35272a8efb22b"}, + {file = "pillow-11.0.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6ec0d5af64f2e3d64a165f490d96368bb5dea8b8f9ad04487f9ab60dc4bb6003"}, + {file = "pillow-11.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c809a70e43c7977c4a42aefd62f0131823ebf7dd73556fa5d5950f5b354087e2"}, + {file = "pillow-11.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:4b60c9520f7207aaf2e1d94de026682fc227806c6e1f55bba7606d1c94dd623a"}, + {file = "pillow-11.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:1e2688958a840c822279fda0086fec1fdab2f95bf2b717b66871c4ad9859d7e8"}, + {file = "pillow-11.0.0-cp313-cp313t-win32.whl", hash = "sha256:607bbe123c74e272e381a8d1957083a9463401f7bd01287f50521ecb05a313f8"}, + {file = "pillow-11.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:5c39ed17edea3bc69c743a8dd3e9853b7509625c2462532e62baa0732163a904"}, + {file = "pillow-11.0.0-cp313-cp313t-win_arm64.whl", hash = "sha256:75acbbeb05b86bc53cbe7b7e6fe00fbcf82ad7c684b3ad82e3d711da9ba287d3"}, + {file = "pillow-11.0.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2e46773dc9f35a1dd28bd6981332fd7f27bec001a918a72a79b4133cf5291dba"}, + {file = "pillow-11.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2679d2258b7f1192b378e2893a8a0a0ca472234d4c2c0e6bdd3380e8dfa21b6a"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eda2616eb2313cbb3eebbe51f19362eb434b18e3bb599466a1ffa76a033fb916"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ec184af98a121fb2da42642dea8a29ec80fc3efbaefb86d8fdd2606619045d"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:8594f42df584e5b4bb9281799698403f7af489fba84c34d53d1c4bfb71b7c4e7"}, + {file = "pillow-11.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:c12b5ae868897c7338519c03049a806af85b9b8c237b7d675b8c5e089e4a618e"}, + {file = "pillow-11.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:70fbbdacd1d271b77b7721fe3cdd2d537bbbd75d29e6300c672ec6bb38d9672f"}, + {file = "pillow-11.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5178952973e588b3f1360868847334e9e3bf49d19e169bbbdfaf8398002419ae"}, + {file = "pillow-11.0.0-cp39-cp39-win32.whl", hash = "sha256:8c676b587da5673d3c75bd67dd2a8cdfeb282ca38a30f37950511766b26858c4"}, + {file = "pillow-11.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:94f3e1780abb45062287b4614a5bc0874519c86a777d4a7ad34978e86428b8dd"}, + {file = "pillow-11.0.0-cp39-cp39-win_arm64.whl", hash = "sha256:290f2cc809f9da7d6d622550bbf4c1e57518212da51b6a30fe8e0a270a5b78bd"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:1187739620f2b365de756ce086fdb3604573337cc28a0d3ac4a01ab6b2d2a6d2"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:fbbcb7b57dc9c794843e3d1258c0fbf0f48656d46ffe9e09b63bbd6e8cd5d0a2"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d203af30149ae339ad1b4f710d9844ed8796e97fda23ffbc4cc472968a47d0b"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21a0d3b115009ebb8ac3d2ebec5c2982cc693da935f4ab7bb5c8ebe2f47d36f2"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:73853108f56df97baf2bb8b522f3578221e56f646ba345a372c78326710d3830"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e58876c91f97b0952eb766123bfef372792ab3f4e3e1f1a2267834c2ab131734"}, + {file = "pillow-11.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:224aaa38177597bb179f3ec87eeefcce8e4f85e608025e9cfac60de237ba6316"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:5bd2d3bdb846d757055910f0a59792d33b555800813c3b39ada1829c372ccb06"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:375b8dd15a1f5d2feafff536d47e22f69625c1aa92f12b339ec0b2ca40263273"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:daffdf51ee5db69a82dd127eabecce20729e21f7a3680cf7cbb23f0829189790"}, + {file = "pillow-11.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:7326a1787e3c7b0429659e0a944725e1b03eeaa10edd945a86dead1913383944"}, + {file = "pillow-11.0.0.tar.gz", hash = "sha256:72bacbaf24ac003fea9bff9837d1eedb6088758d41e100c1552930151f677739"}, ] [package.extras] -docs = ["furo", "olefile", "sphinx (>=7.3)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] +docs = ["furo", "olefile", "sphinx (>=8.1)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinxext-opengraph"] fpx = ["olefile"] mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] @@ -1911,40 +1892,40 @@ xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "4.2.2" +version = "4.3.6" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, - {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, + {file = "platformdirs-4.3.6-py3-none-any.whl", hash = "sha256:73e575e1408ab8103900836b97580d5307456908a03e92031bab39e4554cc3fb"}, + {file = "platformdirs-4.3.6.tar.gz", hash = "sha256:357fb2acbc885b0419afd3ce3ed34564c13c9b95c89360cd9563f73aa5e2b907"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] -type = ["mypy (>=1.8)"] +docs = ["furo (>=2024.8.6)", "proselint (>=0.14)", "sphinx (>=8.0.2)", "sphinx-autodoc-typehints (>=2.4)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=8.3.2)", "pytest-cov (>=5)", "pytest-mock (>=3.14)"] +type = ["mypy (>=1.11.2)"] [[package]] name = "praw" -version = "7.7.1" -description = "PRAW, an acronym for \"Python Reddit API Wrapper\", is a Python package that allows for simple access to Reddit's API." +version = "7.8.1" +description = "Python Reddit API Wrapper." optional = false -python-versions = "~=3.7" +python-versions = "~=3.8" files = [ - {file = "praw-7.7.1-py3-none-any.whl", hash = "sha256:9ec5dc943db00c175bc6a53f4e089ce625f3fdfb27305564b616747b767d38ef"}, - {file = "praw-7.7.1.tar.gz", hash = "sha256:f1d7eef414cafe28080dda12ed09253a095a69933d5c8132eca11d4dc8a070bf"}, + {file = "praw-7.8.1-py3-none-any.whl", hash = "sha256:15917a81a06e20ff0aaaf1358481f4588449fa2421233040cb25e5c8202a3e2f"}, + {file = "praw-7.8.1.tar.gz", hash = "sha256:3c5767909f71e48853eb6335fef7b50a43cbe3da728cdfb16d3be92904b0a4d8"}, ] [package.dependencies] -prawcore = ">=2.1,<3" -update-checker = ">=0.18" +prawcore = ">=2.4,<3" +update_checker = ">=0.18" websocket-client = ">=0.54.0" [package.extras] ci = ["coveralls"] -dev = ["betamax (>=0.8,<0.9)", "betamax-matchers (>=0.3.0,<0.5)", "furo", "packaging", "pre-commit", "pytest (>=2.7.3)", "requests (>=2.20.1,<3)", "sphinx", "urllib3 (==1.26.*)"] -lint = ["furo", "pre-commit", "sphinx"] +dev = ["packaging", "praw[lint]", "praw[test]"] +lint = ["praw[readthedocs]", "pre-commit", "ruff (>=0.0.291)"] readthedocs = ["furo", "sphinx"] test = ["betamax (>=0.8,<0.9)", "betamax-matchers (>=0.3.0,<0.5)", "pytest (>=2.7.3)", "requests (>=2.20.1,<3)", "urllib3 (==1.26.*)"] @@ -1970,13 +1951,13 @@ test = ["betamax (>=0.8,<0.9)", "pytest (>=2.7.3)", "urllib3 (==1.26.*)"] [[package]] name = "prompt-toolkit" -version = "3.0.47" +version = "3.0.48" description = "Library for building powerful interactive command lines in Python" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.47-py3-none-any.whl", hash = "sha256:0d7bfa67001d5e39d02c224b663abc33687405033a8c422d0d675a5a13361d10"}, - {file = "prompt_toolkit-3.0.47.tar.gz", hash = "sha256:1e1b29cb58080b1e69f207c893a1a7bf16d127a5c30c9d17a25a5d77792e5360"}, + {file = "prompt_toolkit-3.0.48-py3-none-any.whl", hash = "sha256:f49a827f90062e411f1ce1f854f2aedb3c23353244f8108b89283587397ac10e"}, + {file = "prompt_toolkit-3.0.48.tar.gz", hash = "sha256:d6623ab0477a80df74e646bdbc93621143f5caf104206aa29294d53de1a03d90"}, ] [package.dependencies] @@ -2004,32 +1985,33 @@ files = [ [[package]] name = "psutil" -version = "6.0.0" +version = "6.1.1" description = "Cross-platform lib for process and system monitoring in Python." optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "psutil-6.0.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a021da3e881cd935e64a3d0a20983bda0bb4cf80e4f74fa9bfcb1bc5785360c6"}, - {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:1287c2b95f1c0a364d23bc6f2ea2365a8d4d9b726a3be7294296ff7ba97c17f0"}, - {file = "psutil-6.0.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:a9a3dbfb4de4f18174528d87cc352d1f788b7496991cca33c6996f40c9e3c92c"}, - {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6ec7588fb3ddaec7344a825afe298db83fe01bfaaab39155fa84cf1c0d6b13c3"}, - {file = "psutil-6.0.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:1e7c870afcb7d91fdea2b37c24aeb08f98b6d67257a5cb0a8bc3ac68d0f1a68c"}, - {file = "psutil-6.0.0-cp27-none-win32.whl", hash = "sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35"}, - {file = "psutil-6.0.0-cp27-none-win_amd64.whl", hash = "sha256:21f1fb635deccd510f69f485b87433460a603919b45e2a324ad65b0cc74f8fb1"}, - {file = "psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0"}, - {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0"}, - {file = "psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd"}, - {file = "psutil-6.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e8d0054fc88153ca0544f5c4d554d42e33df2e009c4ff42284ac9ebdef4132"}, - {file = "psutil-6.0.0-cp36-cp36m-win32.whl", hash = "sha256:fc8c9510cde0146432bbdb433322861ee8c3efbf8589865c8bf8d21cb30c4d14"}, - {file = "psutil-6.0.0-cp36-cp36m-win_amd64.whl", hash = "sha256:34859b8d8f423b86e4385ff3665d3f4d94be3cdf48221fbe476e883514fdb71c"}, - {file = "psutil-6.0.0-cp37-abi3-win32.whl", hash = "sha256:a495580d6bae27291324fe60cea0b5a7c23fa36a7cd35035a16d93bdcf076b9d"}, - {file = "psutil-6.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:33ea5e1c975250a720b3a6609c490db40dae5d83a4eb315170c4fe0d8b1f34b3"}, - {file = "psutil-6.0.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:ffe7fc9b6b36beadc8c322f84e1caff51e8703b88eee1da46d1e3a6ae11b4fd0"}, - {file = "psutil-6.0.0.tar.gz", hash = "sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2"}, + {file = "psutil-6.1.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:9ccc4316f24409159897799b83004cb1e24f9819b0dcf9c0b68bdcb6cefee6a8"}, + {file = "psutil-6.1.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ca9609c77ea3b8481ab005da74ed894035936223422dc591d6772b147421f777"}, + {file = "psutil-6.1.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:8df0178ba8a9e5bc84fed9cfa61d54601b371fbec5c8eebad27575f1e105c0d4"}, + {file = "psutil-6.1.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:1924e659d6c19c647e763e78670a05dbb7feaf44a0e9c94bf9e14dfc6ba50468"}, + {file = "psutil-6.1.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:018aeae2af92d943fdf1da6b58665124897cfc94faa2ca92098838f83e1b1bca"}, + {file = "psutil-6.1.1-cp27-none-win32.whl", hash = "sha256:6d4281f5bbca041e2292be3380ec56a9413b790579b8e593b1784499d0005dac"}, + {file = "psutil-6.1.1-cp27-none-win_amd64.whl", hash = "sha256:c777eb75bb33c47377c9af68f30e9f11bc78e0f07fbf907be4a5d70b2fe5f030"}, + {file = "psutil-6.1.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:fc0ed7fe2231a444fc219b9c42d0376e0a9a1a72f16c5cfa0f68d19f1a0663e8"}, + {file = "psutil-6.1.1-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0bdd4eab935276290ad3cb718e9809412895ca6b5b334f5a9111ee6d9aff9377"}, + {file = "psutil-6.1.1-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6e06c20c05fe95a3d7302d74e7097756d4ba1247975ad6905441ae1b5b66003"}, + {file = "psutil-6.1.1-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97f7cb9921fbec4904f522d972f0c0e1f4fabbdd4e0287813b21215074a0f160"}, + {file = "psutil-6.1.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33431e84fee02bc84ea36d9e2c4a6d395d479c9dd9bba2376c1f6ee8f3a4e0b3"}, + {file = "psutil-6.1.1-cp36-cp36m-win32.whl", hash = "sha256:384636b1a64b47814437d1173be1427a7c83681b17a450bfc309a1953e329603"}, + {file = "psutil-6.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8be07491f6ebe1a693f17d4f11e69d0dc1811fa082736500f649f79df7735303"}, + {file = "psutil-6.1.1-cp37-abi3-win32.whl", hash = "sha256:eaa912e0b11848c4d9279a93d7e2783df352b082f40111e078388701fd479e53"}, + {file = "psutil-6.1.1-cp37-abi3-win_amd64.whl", hash = "sha256:f35cfccb065fff93529d2afb4a2e89e363fe63ca1e4a5da22b603a85833c2649"}, + {file = "psutil-6.1.1.tar.gz", hash = "sha256:cf8496728c18f2d0b45198f06895be52f36611711746b7f30c464b422b50e2f5"}, ] [package.extras] -test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] +dev = ["abi3audit", "black", "check-manifest", "coverage", "packaging", "pylint", "pyperf", "pypinfo", "pytest-cov", "requests", "rstcheck", "ruff", "sphinx", "sphinx_rtd_theme", "toml-sort", "twine", "virtualenv", "vulture", "wheel"] +test = ["pytest", "pytest-xdist", "setuptools"] [[package]] name = "ptyprocess" @@ -2402,13 +2384,13 @@ vulture = ["vulture"] [[package]] name = "pyparsing" -version = "3.1.4" +version = "3.2.1" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false -python-versions = ">=3.6.8" +python-versions = ">=3.9" files = [ - {file = "pyparsing-3.1.4-py3-none-any.whl", hash = "sha256:a6a7ee4235a3f944aa1fa2249307708f893fe5717dc603503c6c7969c070fb7c"}, - {file = "pyparsing-3.1.4.tar.gz", hash = "sha256:f86ec8d1a83f11977c9a6ea7598e8c27fc5cddfa5b07ea2241edbbde1d7bc032"}, + {file = "pyparsing-3.2.1-py3-none-any.whl", hash = "sha256:506ff4f4386c4cec0590ec19e6302d3aedb992fdc02c761e90416f158dacf8e1"}, + {file = "pyparsing-3.2.1.tar.gz", hash = "sha256:61980854fd66de3a90028d679a954d5f2623e83144b5afe5ee86f43d762e5f0a"}, ] [package.extras] @@ -2508,36 +2490,40 @@ unidecode = ["Unidecode (>=1.1.1)"] [[package]] name = "pytz" -version = "2024.1" +version = "2024.2" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, - {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, + {file = "pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725"}, + {file = "pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a"}, ] [[package]] name = "pywin32" -version = "306" +version = "308" 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"}, + {file = "pywin32-308-cp310-cp310-win32.whl", hash = "sha256:796ff4426437896550d2981b9c2ac0ffd75238ad9ea2d3bfa67a1abd546d262e"}, + {file = "pywin32-308-cp310-cp310-win_amd64.whl", hash = "sha256:4fc888c59b3c0bef905ce7eb7e2106a07712015ea1c8234b703a088d46110e8e"}, + {file = "pywin32-308-cp310-cp310-win_arm64.whl", hash = "sha256:a5ab5381813b40f264fa3495b98af850098f814a25a63589a8e9eb12560f450c"}, + {file = "pywin32-308-cp311-cp311-win32.whl", hash = "sha256:5d8c8015b24a7d6855b1550d8e660d8daa09983c80e5daf89a273e5c6fb5095a"}, + {file = "pywin32-308-cp311-cp311-win_amd64.whl", hash = "sha256:575621b90f0dc2695fec346b2d6302faebd4f0f45c05ea29404cefe35d89442b"}, + {file = "pywin32-308-cp311-cp311-win_arm64.whl", hash = "sha256:100a5442b7332070983c4cd03f2e906a5648a5104b8a7f50175f7906efd16bb6"}, + {file = "pywin32-308-cp312-cp312-win32.whl", hash = "sha256:587f3e19696f4bf96fde9d8a57cec74a57021ad5f204c9e627e15c33ff568897"}, + {file = "pywin32-308-cp312-cp312-win_amd64.whl", hash = "sha256:00b3e11ef09ede56c6a43c71f2d31857cf7c54b0ab6e78ac659497abd2834f47"}, + {file = "pywin32-308-cp312-cp312-win_arm64.whl", hash = "sha256:9b4de86c8d909aed15b7011182c8cab38c8850de36e6afb1f0db22b8959e3091"}, + {file = "pywin32-308-cp313-cp313-win32.whl", hash = "sha256:1c44539a37a5b7b21d02ab34e6a4d314e0788f1690d65b48e9b0b89f31abbbed"}, + {file = "pywin32-308-cp313-cp313-win_amd64.whl", hash = "sha256:fd380990e792eaf6827fcb7e187b2b4b1cede0585e3d0c9e84201ec27b9905e4"}, + {file = "pywin32-308-cp313-cp313-win_arm64.whl", hash = "sha256:ef313c46d4c18dfb82a2431e3051ac8f112ccee1a34f29c263c583c568db63cd"}, + {file = "pywin32-308-cp37-cp37m-win32.whl", hash = "sha256:1f696ab352a2ddd63bd07430080dd598e6369152ea13a25ebcdd2f503a38f1ff"}, + {file = "pywin32-308-cp37-cp37m-win_amd64.whl", hash = "sha256:13dcb914ed4347019fbec6697a01a0aec61019c1046c2b905410d197856326a6"}, + {file = "pywin32-308-cp38-cp38-win32.whl", hash = "sha256:5794e764ebcabf4ff08c555b31bd348c9025929371763b2183172ff4708152f0"}, + {file = "pywin32-308-cp38-cp38-win_amd64.whl", hash = "sha256:3b92622e29d651c6b783e368ba7d6722b1634b8e70bd376fd7610fe1992e19de"}, + {file = "pywin32-308-cp39-cp39-win32.whl", hash = "sha256:7873ca4dc60ab3287919881a7d4f88baee4a6e639aa6962de25a98ba6b193341"}, + {file = "pywin32-308-cp39-cp39-win_amd64.whl", hash = "sha256:71b3322d949b4cc20776436a9c9ba0eeedcbc9c650daa536df63f0ff111bb920"}, ] [[package]] @@ -2663,21 +2649,18 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "questionary" -version = "1.10.0" +version = "2.1.0" description = "Python library to build pretty command line user prompts ⭐️" optional = false -python-versions = ">=3.6,<4.0" +python-versions = ">=3.8" files = [ - {file = "questionary-1.10.0-py3-none-any.whl", hash = "sha256:fecfcc8cca110fda9d561cb83f1e97ecbb93c613ff857f655818839dac74ce90"}, - {file = "questionary-1.10.0.tar.gz", hash = "sha256:600d3aefecce26d48d97eee936fdb66e4bc27f934c3ab6dd1e292c4f43946d90"}, + {file = "questionary-2.1.0-py3-none-any.whl", hash = "sha256:44174d237b68bc828e4878c763a9ad6790ee61990e0ae72927694ead57bab8ec"}, + {file = "questionary-2.1.0.tar.gz", hash = "sha256:6302cdd645b19667d8f6e6634774e9538bfcd1aad9be287e743d96cacaf95587"}, ] [package.dependencies] prompt_toolkit = ">=2.0,<4.0" -[package.extras] -docs = ["Sphinx (>=3.3,<4.0)", "sphinx-autobuild (>=2020.9.1,<2021.0.0)", "sphinx-autodoc-typehints (>=1.11.1,<2.0.0)", "sphinx-copybutton (>=0.3.1,<0.4.0)", "sphinx-rtd-theme (>=0.5.0,<0.6.0)"] - [[package]] name = "readability-lxml" version = "0.8.1" @@ -2882,13 +2865,13 @@ websocket-client = ">=1.8,<2.0" [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] [[package]] @@ -3014,40 +2997,41 @@ blobfile = ["blobfile (>=2)"] [[package]] name = "tornado" -version = "6.4.1" +version = "6.4.2" 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.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:163b0aafc8e23d8cdc3c9dfb24c5368af84a81e3364745ccb4427669bf84aec8"}, - {file = "tornado-6.4.1-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6d5ce3437e18a2b66fbadb183c1d3364fb03f2be71299e7d10dbeeb69f4b2a14"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2e20b9113cd7293f164dc46fffb13535266e713cdb87bd2d15ddb336e96cfc4"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8ae50a504a740365267b2a8d1a90c9fbc86b780a39170feca9bcc1787ff80842"}, - {file = "tornado-6.4.1-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:613bf4ddf5c7a95509218b149b555621497a6cc0d46ac341b30bd9ec19eac7f3"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25486eb223babe3eed4b8aecbac33b37e3dd6d776bc730ca14e1bf93888b979f"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:454db8a7ecfcf2ff6042dde58404164d969b6f5d58b926da15e6b23817950fc4"}, - {file = "tornado-6.4.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a02a08cc7a9314b006f653ce40483b9b3c12cda222d6a46d4ac63bb6c9057698"}, - {file = "tornado-6.4.1-cp38-abi3-win32.whl", hash = "sha256:d9a566c40b89757c9aa8e6f032bcdb8ca8795d7c1a9762910c722b1635c9de4d"}, - {file = "tornado-6.4.1-cp38-abi3-win_amd64.whl", hash = "sha256:b24b8982ed444378d7f21d563f4180a2de31ced9d8d84443907a0a64da2072e7"}, - {file = "tornado-6.4.1.tar.gz", hash = "sha256:92d3ab53183d8c50f8204a51e6f91d18a15d5ef261e84d452800d4ff6fc504e9"}, + {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1"}, + {file = "tornado-6.4.2-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:072ce12ada169c5b00b7d92a99ba089447ccc993ea2143c9ede887e0937aa803"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a017d239bd1bb0919f72af256a970624241f070496635784d9bf0db640d3fec"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c36e62ce8f63409301537222faffcef7dfc5284f27eec227389f2ad11b09d946"}, + {file = "tornado-6.4.2-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca9eb02196e789c9cb5c3c7c0f04fb447dc2adffd95265b2c7223a8a615ccbf"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:304463bd0772442ff4d0f5149c6f1c2135a1fae045adf070821c6cdc76980634"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:c82c46813ba483a385ab2a99caeaedf92585a1f90defb5693351fa7e4ea0bf73"}, + {file = "tornado-6.4.2-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:932d195ca9015956fa502c6b56af9eb06106140d844a335590c1ec7f5277d10c"}, + {file = "tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482"}, + {file = "tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38"}, + {file = "tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b"}, ] [[package]] name = "tqdm" -version = "4.66.5" +version = "4.67.1" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.5-py3-none-any.whl", hash = "sha256:90279a3770753eafc9194a0364852159802111925aa30eb3f9d85b0e805ac7cd"}, - {file = "tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad"}, + {file = "tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2"}, + {file = "tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2"}, ] [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] -dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] +dev = ["nbval", "pytest (>=6)", "pytest-asyncio (>=0.24)", "pytest-cov", "pytest-timeout"] +discord = ["requests"] notebook = ["ipywidgets (>=6)"] slack = ["slack-sdk"] telegram = ["requests"] @@ -3069,13 +3053,13 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, [[package]] name = "trio" -version = "0.27.0" +version = "0.28.0" description = "A friendly Python library for async concurrency and I/O" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "trio-0.27.0-py3-none-any.whl", hash = "sha256:68eabbcf8f457d925df62da780eff15ff5dc68fd6b367e2dde59f7aaf2a0b884"}, - {file = "trio-0.27.0.tar.gz", hash = "sha256:1dcc95ab1726b2da054afea8fd761af74bad79bd52381b84eae408e983c76831"}, + {file = "trio-0.28.0-py3-none-any.whl", hash = "sha256:56d58977acc1635735a96581ec70513cc781b8b6decd299c487d3be2a721cd94"}, + {file = "trio-0.28.0.tar.gz", hash = "sha256:4e547896fe9e8a5658e54e4c7c5fa1db748cbbbaa7c965e7d40505b928c73c05"}, ] [package.dependencies] @@ -3116,13 +3100,13 @@ files = [ [[package]] name = "tzdata" -version = "2024.1" +version = "2024.2" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2024.1-py2.py3-none-any.whl", hash = "sha256:9068bc196136463f5245e51efda838afa15aaeca9903f49050dfa2679db4d252"}, - {file = "tzdata-2024.1.tar.gz", hash = "sha256:2674120f8d891909751c38abcdfd386ac0a5a1127954fbc332af6b5ceae07efd"}, + {file = "tzdata-2024.2-py2.py3-none-any.whl", hash = "sha256:a48093786cdcde33cad18c2555e8532f34422074448fbc874186f0abd79565cd"}, + {file = "tzdata-2024.2.tar.gz", hash = "sha256:7d85cc416e9382e69095b7bdf4afd9e3880418a2413feec7069d533d6b4e31cc"}, ] [[package]] @@ -3178,13 +3162,13 @@ test = ["pytest (>=2.7.3)"] [[package]] name = "urllib3" -version = "2.2.2" +version = "2.3.0" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "urllib3-2.2.2-py3-none-any.whl", hash = "sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472"}, - {file = "urllib3-2.2.2.tar.gz", hash = "sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168"}, + {file = "urllib3-2.3.0-py3-none-any.whl", hash = "sha256:1cee9ad369867bfdbbb48b7dd50374c0967a0bb7710050facf0dd6911440e3df"}, + {file = "urllib3-2.3.0.tar.gz", hash = "sha256:f8c5449b3cf0861679ce7e0503c7b44b5ec981bec0d1d3795a07f1ba96f0204d"}, ] [package.dependencies] @@ -3341,13 +3325,13 @@ files = [ [[package]] name = "win32-setctime" -version = "1.1.0" +version = "1.2.0" description = "A small Python utility to set file creation time on Windows" optional = false python-versions = ">=3.5" files = [ - {file = "win32_setctime-1.1.0-py3-none-any.whl", hash = "sha256:231db239e959c2fe7eb1d7dc129f11172354f98361c4fa2d6d2d7e278baa8aad"}, - {file = "win32_setctime-1.1.0.tar.gz", hash = "sha256:15cf5750465118d6929ae4de4eb46e8edae9a5634350c01ba582df868e932cb2"}, + {file = "win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390"}, + {file = "win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0"}, ] [package.extras] diff --git a/rrational/__init__.py b/rrational/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/rrational/export.py b/rrational/export.py new file mode 100644 index 00000000..87097b23 --- /dev/null +++ b/rrational/export.py @@ -0,0 +1,52 @@ +from io import BytesIO +import base64 +import gzip +import jinja2 +import pandas as pd +from pathlib import Path +import json +from IPython.display import HTML, display + +def base64_gzip_encode(data: str) -> str: + """because there is a lot of uncompressed text data, we can compress it to gzip and store as base64. This isn't perfect but it's simple and works with a single static page""" + buf = BytesIO() + compressGzip = gzip.GzipFile(fileobj=buf, mode="wb") + compressGzip.write(data.encode()) + compressGzip.close() + buf.seek(0) + + b64str = base64.b64encode(buf.getvalue()).decode() + return b64str + + +def export_df_2_html(df: pd.DataFrame = None, template: Path=Path( "../index.jinja2.html"), output: Path = Path("../index.html"), columns:list = None, hidden_columns: list = []): + """ + """ + + environment = jinja2.Environment() + template_o = open("../index.jinja2.html").read() + template_o = environment.from_string(template_o) + + columns = [ + { + "title": c, + "visible": c not in hidden_columns, + "searchable": c not in hidden_columns, + "footer": c, + "name": c+"2", + } + for c in df.columns + ] + columns = json.dumps(columns) + + b64str = base64_gzip_encode(df.to_json(orient="values")) + + html = template_o.render( + data=b64str, + columns=columns, + ) + html_out = Path(output).resolve() + open(html_out, "w").write(html) + + htmla = f'View the page {html_out}' + display(HTML(htmla)) diff --git a/rrational/transform.py b/rrational/transform.py new file mode 100644 index 00000000..29ef3476 --- /dev/null +++ b/rrational/transform.py @@ -0,0 +1,124 @@ +import markdown +import pandas as pd +import json +import collections, itertools +from collections import OrderedDict + + +def join_uniq(x: list[str]): + return "\n".join(set(x)) + + +def chain_lists(x: list[list[str]]): + return [item for sublist in x for item in sublist] + +def format_flair(author_flair_text): + if author_flair_text: + return f" {author_flair_text}" + return "" + +def commentmd2html(x: dict) -> str: + """convert a comment to html""" + body = markdown.markdown(x['body']) + ts = pd.to_datetime(x['created_utc'], unit='s').strftime('%Y-%m-%d') + flair = format_flair(x['author_flair_text']) + url = prefix + x['permalink'] + s = f"""

{x.get('author', 'anon')} [{x['score']:+}] {flair} {ts}

+{body} +""" + # print(s) + return s + + +def collapsibe(title, body): + """make a collapsible html element""" + return f"""
{title} +{body} +
+""" + +prefix = "https://reddit.com" +def c2md(x): + """md comment to html""" + return collapsibe(x['id'], commentmd2html(x)) + + +def url2a(url): + """url to a tag""" + text = url + if "reddit.com/r/rational" in url: + text = url.split("/")[-2] + # text = url.replace('https://reddit.com/r/rational/comments/', '') + + return f'{text}' + + + + +def unique_elements(lst): + """get unique elements but unlike a set, keep them ordered.""" + return list(OrderedDict.fromkeys(lst)) + +def urls2a(urls, sep=None): + """urls to a tags""" + if isinstance(urls, str): + urls = urls.split("\n") + + # get uniques from list, keep in same order + urls = unique_elements(urls) + + a_els = [url2a(u) for u in urls] + + # now make into a html list + if sep is None: + return "" + else: + return sep.join(a_els) + +import numpy as np + +def auto_transform_to_html(d): + for c in d.columns: + # if the cols is a lists of strings + is_list = d[c].apply(lambda x: isinstance(x, (list, tuple, np.ndarray))).all() + is_list_str = is_list and d[c].apply(lambda x: (x is None) or (len(x)==0) or isinstance(x[0], str)).all() + is_str = d[c].apply(lambda x: isinstance(x, str)).all() + is_list_of_urls = is_list_str and d[c].apply(lambda x: (len(x)==0) or x[0].startswith("http")).all() + is_urls = is_str and d[c].apply(lambda x: x.startswith("http")).all() + is_url = d[c].apply(lambda x: isinstance(x, str)).all() and d[c].apply(lambda x: x.startswith("http")).all() + is_list_obj = is_list and d[c].apply(lambda x: isinstance(x, dict)).all() + + print(f"{c}, is_list={is_list}, is_list_str={is_list_str}, is_list_url={is_list_of_urls}, is_url={is_url}, is_urls={is_urls}, is_list_obj={is_list_obj}\n") + + # if columns contains str: urls + if is_urls: + d[c] = d[c].apply(lambda x: url2a(x)) + # elif c.endswith("urls"): + # d[c] = d[c].apply(lambda x: collapsibe('...', urls2a(x))) + # elif c.endswith("url"): + # d[c] = d[c].apply(lambda x: url2a(x)) + elif is_list_of_urls: + d[c] = d[c].apply(lambda x: collapsibe('...', urls2a(x))) + elif is_list_str: + d[c] = d[c].apply(lambda x: join_uniq(x)) + + + # if float, round to 2 decimal places + elif d[c].dtype == float: + d[c] = d[c].apply(lambda x: round(x, 2)) + + # if column name ends with utc + elif c.endswith("utc"): + d[c] = pd.to_datetime(d[c], unit='s').dt.strftime('%Y-%m-%d') + + elif is_list: + # TODO object to json using pandas.io.json.dumps + # from pandas.io.json._json import to_json + from pandas._libs.json import ujson_dumps + d[c] = d[c].apply(lambda x: collapsibe('...', ujson_dumps(x, indent=2))) + + + # make title have a link to first url + d['title'] = d.apply(lambda x: f'{x["title"]}', axis=1) + return d +