From 9e5e4e5474f8654d0ead9e48faaaab6840c5a848 Mon Sep 17 00:00:00 2001 From: byersiiasa Date: Thu, 15 Feb 2024 18:21:47 +0100 Subject: [PATCH] change requriements and setup for poetry --- poetry.lock | 2105 ++++++++++++++++ pyproject.toml | 35 + rime/pp_combined_example.ipynb | 4190 ++++---------------------------- setup.cfg | 48 - setup.py | 3 - 5 files changed, 2655 insertions(+), 3726 deletions(-) create mode 100644 poetry.lock create mode 100644 pyproject.toml delete mode 100644 setup.cfg delete mode 100644 setup.py diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..f7c549c --- /dev/null +++ b/poetry.lock @@ -0,0 +1,2105 @@ +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. + +[[package]] +name = "about-time" +version = "4.2.1" +description = "Easily measure timing and throughput of code blocks, with beautiful human friendly representations." +optional = false +python-versions = ">=3.7, <4" +files = [ + {file = "about-time-4.2.1.tar.gz", hash = "sha256:6a538862d33ce67d997429d14998310e1dbfda6cb7d9bbfbf799c4709847fece"}, + {file = "about_time-4.2.1-py3-none-any.whl", hash = "sha256:8bbf4c75fe13cbd3d72f49a03b02c5c7dca32169b6d49117c257e7eb3eaee341"}, +] + +[[package]] +name = "alive-progress" +version = "3.1.5" +description = "A new kind of Progress Bar, with real-time throughput, ETA, and very cool animations!" +optional = false +python-versions = ">=3.7, <4" +files = [ + {file = "alive-progress-3.1.5.tar.gz", hash = "sha256:42e399a66c8150dc507602dff7b7953f105ef11faf97ddaa6d27b1cbf45c4c98"}, + {file = "alive_progress-3.1.5-py3-none-any.whl", hash = "sha256:347220c1858e3abe137fa0746895668c04df09c5261a13dc03f05795e8a29be5"}, +] + +[package.dependencies] +about-time = "4.2.1" +grapheme = "0.6.0" + +[[package]] +name = "anyio" +version = "4.2.0" +description = "High level compatibility layer for multiple asynchronous event loop implementations" +optional = false +python-versions = ">=3.8" +files = [ + {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"}, + {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"}, +] + +[package.dependencies] +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} +idna = ">=2.8" +sniffio = ">=1.1" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} + +[package.extras] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.23)"] + +[[package]] +name = "bleach" +version = "6.1.0" +description = "An easy safelist-based HTML-sanitizing tool." +optional = false +python-versions = ">=3.8" +files = [ + {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, + {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, +] + +[package.dependencies] +six = ">=1.9.0" +webencodings = "*" + +[package.extras] +css = ["tinycss2 (>=1.1.0,<1.3)"] + +[[package]] +name = "bokeh" +version = "3.3.4" +description = "Interactive plots and applications in the browser from Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "bokeh-3.3.4-py3-none-any.whl", hash = "sha256:ad7b6f89d0a7c2be01eff1db0ca24e2755ac41de14539db919a62e791809c309"}, + {file = "bokeh-3.3.4.tar.gz", hash = "sha256:73b7982dc2b8df15bf660cdddc8d3825e829195c438015a5d09824f1a7028368"}, +] + +[package.dependencies] +contourpy = ">=1" +Jinja2 = ">=2.9" +numpy = ">=1.16" +packaging = ">=16.8" +pandas = ">=1.2" +pillow = ">=7.1.0" +PyYAML = ">=3.10" +tornado = ">=5.1" +xyzservices = ">=2021.09.1" + +[[package]] +name = "certifi" +version = "2024.2.2" +description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6" +files = [ + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, +] + +[[package]] +name = "charset-normalizer" +version = "3.3.2" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, +] + +[[package]] +name = "click" +version = "8.1.7" +description = "Composable command line interface toolkit" +optional = false +python-versions = ">=3.7" +files = [ + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "cloudpickle" +version = "3.0.0" +description = "Pickler class to extend the standard pickle.Pickler functionality" +optional = false +python-versions = ">=3.8" +files = [ + {file = "cloudpickle-3.0.0-py3-none-any.whl", hash = "sha256:246ee7d0c295602a036e86369c77fecda4ab17b506496730f2f576d9016fd9c7"}, + {file = "cloudpickle-3.0.0.tar.gz", hash = "sha256:996d9a482c6fb4f33c1a35335cf8afd065d2a56e973270364840712d9131a882"}, +] + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, +] + +[[package]] +name = "colorcet" +version = "3.0.1" +description = "Collection of perceptually uniform colormaps" +optional = false +python-versions = ">=2.7" +files = [ + {file = "colorcet-3.0.1-py2.py3-none-any.whl", hash = "sha256:8daff01824ee9935fdf762d15c444a67d3e361ad4f8b738ad59ac9bf38f30600"}, + {file = "colorcet-3.0.1.tar.gz", hash = "sha256:51455a20353d12fac91f953772d8409f2474e6a0db1af3fa4f7005f405a2480b"}, +] + +[package.dependencies] +pyct = ">=0.4.4" + +[package.extras] +all = ["bokeh", "flake8", "holoviews", "matplotlib", "nbsite (>=0.7.2rc10)", "nbsmoke (>=0.2.6)", "numpy", "pyct (>=0.4.4)", "pydata-sphinx-theme (<0.9.0)", "pytest (>=2.8.5)", "pytest-cov", "pytest-mpl", "setuptools (>=30.3.0)", "sphinx-copybutton", "wheel"] +build = ["pyct (>=0.4.4)", "setuptools (>=30.3.0)", "wheel"] +doc = ["bokeh", "holoviews", "matplotlib", "nbsite (>=0.7.2rc10)", "numpy", "pydata-sphinx-theme (<0.9.0)", "sphinx-copybutton"] +examples = ["bokeh", "holoviews", "matplotlib", "numpy"] +tests = ["flake8", "nbsmoke (>=0.2.6)", "pytest (>=2.8.5)", "pytest-cov"] +tests-extra = ["flake8", "nbsmoke (>=0.2.6)", "pytest (>=2.8.5)", "pytest-cov", "pytest-mpl"] + +[[package]] +name = "contourpy" +version = "1.2.0" +description = "Python library for calculating contours of 2D quadrilateral grids" +optional = false +python-versions = ">=3.9" +files = [ + {file = "contourpy-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0274c1cb63625972c0c007ab14dd9ba9e199c36ae1a231ce45d725cbcbfd10a8"}, + {file = "contourpy-1.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ab459a1cbbf18e8698399c595a01f6dcc5c138220ca3ea9e7e6126232d102bb4"}, + {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fdd887f17c2f4572ce548461e4f96396681212d858cae7bd52ba3310bc6f00f"}, + {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d16edfc3fc09968e09ddffada434b3bf989bf4911535e04eada58469873e28e"}, + {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c203f617abc0dde5792beb586f827021069fb6d403d7f4d5c2b543d87edceb9"}, + {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b69303ceb2e4d4f146bf82fda78891ef7bcd80c41bf16bfca3d0d7eb545448aa"}, + {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:884c3f9d42d7218304bc74a8a7693d172685c84bd7ab2bab1ee567b769696df9"}, + {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4a1b1208102be6e851f20066bf0e7a96b7d48a07c9b0cfe6d0d4545c2f6cadab"}, + {file = "contourpy-1.2.0-cp310-cp310-win32.whl", hash = "sha256:34b9071c040d6fe45d9826cbbe3727d20d83f1b6110d219b83eb0e2a01d79488"}, + {file = "contourpy-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:bd2f1ae63998da104f16a8b788f685e55d65760cd1929518fd94cd682bf03e41"}, + {file = "contourpy-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dd10c26b4eadae44783c45ad6655220426f971c61d9b239e6f7b16d5cdaaa727"}, + {file = "contourpy-1.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c6b28956b7b232ae801406e529ad7b350d3f09a4fde958dfdf3c0520cdde0dd"}, + {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebeac59e9e1eb4b84940d076d9f9a6cec0064e241818bcb6e32124cc5c3e377a"}, + {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:139d8d2e1c1dd52d78682f505e980f592ba53c9f73bd6be102233e358b401063"}, + {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e9dc350fb4c58adc64df3e0703ab076f60aac06e67d48b3848c23647ae4310e"}, + {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18fc2b4ed8e4a8fe849d18dce4bd3c7ea637758c6343a1f2bae1e9bd4c9f4686"}, + {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:16a7380e943a6d52472096cb7ad5264ecee36ed60888e2a3d3814991a0107286"}, + {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8d8faf05be5ec8e02a4d86f616fc2a0322ff4a4ce26c0f09d9f7fb5330a35c95"}, + {file = "contourpy-1.2.0-cp311-cp311-win32.whl", hash = "sha256:67b7f17679fa62ec82b7e3e611c43a016b887bd64fb933b3ae8638583006c6d6"}, + {file = "contourpy-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:99ad97258985328b4f207a5e777c1b44a83bfe7cf1f87b99f9c11d4ee477c4de"}, + {file = "contourpy-1.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:575bcaf957a25d1194903a10bc9f316c136c19f24e0985a2b9b5608bdf5dbfe0"}, + {file = "contourpy-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9e6c93b5b2dbcedad20a2f18ec22cae47da0d705d454308063421a3b290d9ea4"}, + {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:464b423bc2a009088f19bdf1f232299e8b6917963e2b7e1d277da5041f33a779"}, + {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:68ce4788b7d93e47f84edd3f1f95acdcd142ae60bc0e5493bfd120683d2d4316"}, + {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d7d1f8871998cdff5d2ff6a087e5e1780139abe2838e85b0b46b7ae6cc25399"}, + {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e739530c662a8d6d42c37c2ed52a6f0932c2d4a3e8c1f90692ad0ce1274abe0"}, + {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:247b9d16535acaa766d03037d8e8fb20866d054d3c7fbf6fd1f993f11fc60ca0"}, + {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:461e3ae84cd90b30f8d533f07d87c00379644205b1d33a5ea03381edc4b69431"}, + {file = "contourpy-1.2.0-cp312-cp312-win32.whl", hash = "sha256:1c2559d6cffc94890b0529ea7eeecc20d6fadc1539273aa27faf503eb4656d8f"}, + {file = "contourpy-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:491b1917afdd8638a05b611a56d46587d5a632cabead889a5440f7c638bc6ed9"}, + {file = "contourpy-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5fd1810973a375ca0e097dee059c407913ba35723b111df75671a1976efa04bc"}, + {file = "contourpy-1.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:999c71939aad2780f003979b25ac5b8f2df651dac7b38fb8ce6c46ba5abe6ae9"}, + {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7caf9b241464c404613512d5594a6e2ff0cc9cb5615c9475cc1d9b514218ae8"}, + {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:266270c6f6608340f6c9836a0fb9b367be61dde0c9a9a18d5ece97774105ff3e"}, + {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbd50d0a0539ae2e96e537553aff6d02c10ed165ef40c65b0e27e744a0f10af8"}, + {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11f8d2554e52f459918f7b8e6aa20ec2a3bce35ce95c1f0ef4ba36fbda306df5"}, + {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ce96dd400486e80ac7d195b2d800b03e3e6a787e2a522bfb83755938465a819e"}, + {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d3364b999c62f539cd403f8123ae426da946e142312a514162adb2addd8d808"}, + {file = "contourpy-1.2.0-cp39-cp39-win32.whl", hash = "sha256:1c88dfb9e0c77612febebb6ac69d44a8d81e3dc60f993215425b62c1161353f4"}, + {file = "contourpy-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:78e6ad33cf2e2e80c5dfaaa0beec3d61face0fb650557100ee36db808bfa6843"}, + {file = "contourpy-1.2.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:be16975d94c320432657ad2402f6760990cb640c161ae6da1363051805fa8108"}, + {file = "contourpy-1.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b95a225d4948b26a28c08307a60ac00fb8671b14f2047fc5476613252a129776"}, + {file = "contourpy-1.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0d7e03c0f9a4f90dc18d4e77e9ef4ec7b7bbb437f7f675be8e530d65ae6ef956"}, + {file = "contourpy-1.2.0.tar.gz", hash = "sha256:171f311cb758de7da13fc53af221ae47a5877be5a0843a9fe150818c51ed276a"}, +] + +[package.dependencies] +numpy = ">=1.20,<2.0" + +[package.extras] +bokeh = ["bokeh", "selenium"] +docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"] +mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.6.1)", "types-Pillow"] +test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] +test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] + +[[package]] +name = "cycler" +version = "0.12.1" +description = "Composable style cycles" +optional = false +python-versions = ">=3.8" +files = [ + {file = "cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30"}, + {file = "cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"}, +] + +[package.extras] +docs = ["ipython", "matplotlib", "numpydoc", "sphinx"] +tests = ["pytest", "pytest-cov", "pytest-xdist"] + +[[package]] +name = "dask" +version = "2024.2.0" +description = "Parallel PyData with Task Scheduling" +optional = false +python-versions = ">=3.9" +files = [ + {file = "dask-2024.2.0-py3-none-any.whl", hash = "sha256:439efe5479a102d4d2712d69a52458e6c1e78b96c7020976399ce249097caf48"}, + {file = "dask-2024.2.0.tar.gz", hash = "sha256:7ab6e8a2c1e256a4c930f2996c652f057239dee49e1c5c4742f351efe6deecd1"}, +] + +[package.dependencies] +click = ">=8.1" +cloudpickle = ">=1.5.0" +fsspec = ">=2021.09.0" +importlib-metadata = ">=4.13.0" +packaging = ">=20.0" +partd = ">=1.2.0" +pyyaml = ">=5.3.1" +toolz = ">=0.10.0" + +[package.extras] +array = ["numpy (>=1.21)"] +complete = ["dask[array,dataframe,diagnostics,distributed]", "lz4 (>=4.3.2)", "pyarrow (>=7.0)", "pyarrow-hotfix"] +dataframe = ["dask[array]", "pandas (>=1.3)"] +diagnostics = ["bokeh (>=2.4.2)", "jinja2 (>=2.10.3)"] +distributed = ["distributed (==2024.2.0)"] +test = ["pandas[test]", "pre-commit", "pytest", "pytest-cov", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist"] + +[[package]] +name = "distributed" +version = "2024.2.0" +description = "Distributed scheduler for Dask" +optional = false +python-versions = ">=3.9" +files = [ + {file = "distributed-2024.2.0-py3-none-any.whl", hash = "sha256:9545a176a7684b155cdfc56c1bf9b1b588e08e107f9f937166d4912b1ee809f7"}, + {file = "distributed-2024.2.0.tar.gz", hash = "sha256:884df87d784ace510173da1f12ffc3ed3b9858288cf225327e27a01e047d098a"}, +] + +[package.dependencies] +click = ">=8.0" +cloudpickle = ">=1.5.0" +dask = "2024.2.0" +jinja2 = ">=2.10.3" +locket = ">=1.0.0" +msgpack = ">=1.0.0" +packaging = ">=20.0" +psutil = ">=5.7.2" +pyyaml = ">=5.3.1" +sortedcontainers = ">=2.0.5" +tblib = ">=1.6.0" +toolz = ">=0.10.0" +tornado = ">=6.0.4" +urllib3 = ">=1.24.3" +zict = ">=3.0.0" + +[[package]] +name = "et-xmlfile" +version = "1.1.0" +description = "An implementation of lxml.xmlfile for the standard library" +optional = false +python-versions = ">=3.6" +files = [ + {file = "et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada"}, + {file = "et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c"}, +] + +[[package]] +name = "exceptiongroup" +version = "1.2.0" +description = "Backport of PEP 654 (exception groups)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, + {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, +] + +[package.extras] +test = ["pytest (>=6)"] + +[[package]] +name = "fonttools" +version = "4.48.1" +description = "Tools to manipulate font files" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fonttools-4.48.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:702ae93058c81f46461dc4b2c79f11d3c3d8fd7296eaf8f75b4ba5bbf813cd5f"}, + {file = "fonttools-4.48.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:97f0a49fa6aa2d6205c6f72f4f98b74ef4b9bfdcb06fd78e6fe6c7af4989b63e"}, + {file = "fonttools-4.48.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3260db55f1843e57115256e91247ad9f68cb02a434b51262fe0019e95a98738"}, + {file = "fonttools-4.48.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e740a7602c2bb71e1091269b5dbe89549749a8817dc294b34628ffd8b2bf7124"}, + {file = "fonttools-4.48.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4108b1d247953dd7c90ec8f457a2dec5fceb373485973cc852b14200118a51ee"}, + {file = "fonttools-4.48.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:56339ec557f0c342bddd7c175f5e41c45fc21282bee58a86bd9aa322bec715f2"}, + {file = "fonttools-4.48.1-cp310-cp310-win32.whl", hash = "sha256:bff5b38d0e76eb18e0b8abbf35d384e60b3371be92f7be36128ee3e67483b3ec"}, + {file = "fonttools-4.48.1-cp310-cp310-win_amd64.whl", hash = "sha256:f7449493886da6a17472004d3818cc050ba3f4a0aa03fb47972e4fa5578e6703"}, + {file = "fonttools-4.48.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:18b35fd1a850ed7233a99bbd6774485271756f717dac8b594958224b54118b61"}, + {file = "fonttools-4.48.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cad5cfd044ea2e306fda44482b3dd32ee47830fa82dfa4679374b41baa294f5f"}, + {file = "fonttools-4.48.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6f30e605c7565d0da6f0aec75a30ec372072d016957cd8fc4469721a36ea59b7"}, + {file = "fonttools-4.48.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aee76fd81a8571c68841d6ef0da750d5ff08ff2c5f025576473016f16ac3bcf7"}, + {file = "fonttools-4.48.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5057ade278e67923000041e2b195c9ea53e87f227690d499b6a4edd3702f7f01"}, + {file = "fonttools-4.48.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b10633aafc5932995a391ec07eba5e79f52af0003a1735b2306b3dab8a056d48"}, + {file = "fonttools-4.48.1-cp311-cp311-win32.whl", hash = "sha256:0d533f89819f9b3ee2dbedf0fed3825c425850e32bdda24c558563c71be0064e"}, + {file = "fonttools-4.48.1-cp311-cp311-win_amd64.whl", hash = "sha256:d20588466367f05025bb1efdf4e5d498ca6d14bde07b6928b79199c588800f0a"}, + {file = "fonttools-4.48.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0a2417547462e468edf35b32e3dd06a6215ac26aa6316b41e03b8eeaf9f079ea"}, + {file = "fonttools-4.48.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cf5a0cd974f85a80b74785db2d5c3c1fd6cc09a2ba3c837359b2b5da629ee1b0"}, + {file = "fonttools-4.48.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0452fcbfbce752ba596737a7c5ec5cf76bc5f83847ce1781f4f90eab14ece252"}, + {file = "fonttools-4.48.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:578c00f93868f64a4102ecc5aa600a03b49162c654676c3fadc33de2ddb88a81"}, + {file = "fonttools-4.48.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:63dc592a16cd08388d8c4c7502b59ac74190b23e16dfc863c69fe1ea74605b68"}, + {file = "fonttools-4.48.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9b58638d8a85e3a1b32ec0a91d9f8171a877b4b81c408d4cb3257d0dee63e092"}, + {file = "fonttools-4.48.1-cp312-cp312-win32.whl", hash = "sha256:d10979ef14a8beaaa32f613bb698743f7241d92f437a3b5e32356dfb9769c65d"}, + {file = "fonttools-4.48.1-cp312-cp312-win_amd64.whl", hash = "sha256:cdfd7557d1bd294a200bd211aa665ca3b02998dcc18f8211a5532da5b8fad5c5"}, + {file = "fonttools-4.48.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:3cdb9a92521b81bf717ebccf592bd0292e853244d84115bfb4db0c426de58348"}, + {file = "fonttools-4.48.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b4ec6d42a7555f5ae35f3b805482f0aad0f1baeeef54859492ea3b782959d4a"}, + {file = "fonttools-4.48.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:902e9c4e9928301912f34a6638741b8ae0b64824112b42aaf240e06b735774b1"}, + {file = "fonttools-4.48.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8c8b54bd1420c184a995f980f1a8076f87363e2bb24239ef8c171a369d85a31"}, + {file = "fonttools-4.48.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:12ee86abca46193359ea69216b3a724e90c66ab05ab220d39e3fc068c1eb72ac"}, + {file = "fonttools-4.48.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6978bade7b6c0335095bdd0bd97f8f3d590d2877b370f17e03e0865241694eb5"}, + {file = "fonttools-4.48.1-cp38-cp38-win32.whl", hash = "sha256:bcd77f89fc1a6b18428e7a55dde8ef56dae95640293bfb8f4e929929eba5e2a2"}, + {file = "fonttools-4.48.1-cp38-cp38-win_amd64.whl", hash = "sha256:f40441437b039930428e04fb05ac3a132e77458fb57666c808d74a556779e784"}, + {file = "fonttools-4.48.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0d2b01428f7da26f229a5656defc824427b741e454b4e210ad2b25ed6ea2aed4"}, + {file = "fonttools-4.48.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:df48798f9a4fc4c315ab46e17873436c8746f5df6eddd02fad91299b2af7af95"}, + {file = "fonttools-4.48.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2eb4167bde04e172a93cf22c875d8b0cff76a2491f67f5eb069566215302d45d"}, + {file = "fonttools-4.48.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c900508c46274d32d308ae8e82335117f11aaee1f7d369ac16502c9a78930b0a"}, + {file = "fonttools-4.48.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:594206b31c95fcfa65f484385171fabb4ec69f7d2d7f56d27f17db26b7a31814"}, + {file = "fonttools-4.48.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:292922dc356d7f11f5063b4111a8b719efb8faea92a2a88ed296408d449d8c2e"}, + {file = "fonttools-4.48.1-cp39-cp39-win32.whl", hash = "sha256:4709c5bf123ba10eac210d2d5c9027d3f472591d9f1a04262122710fa3d23199"}, + {file = "fonttools-4.48.1-cp39-cp39-win_amd64.whl", hash = "sha256:63c73b9dd56a94a3cbd2f90544b5fca83666948a9e03370888994143b8d7c070"}, + {file = "fonttools-4.48.1-py3-none-any.whl", hash = "sha256:e3e33862fc5261d46d9aae3544acb36203b1a337d00bdb5d3753aae50dac860e"}, + {file = "fonttools-4.48.1.tar.gz", hash = "sha256:8b8a45254218679c7f1127812761e7854ed5c8e34349aebf581e8c9204e7495a"}, +] + +[package.extras] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] +graphite = ["lz4 (>=1.7.4.2)"] +interpolatable = ["munkres", "pycairo", "scipy"] +lxml = ["lxml (>=4.0)"] +pathops = ["skia-pathops (>=0.5.0)"] +plot = ["matplotlib"] +repacker = ["uharfbuzz (>=0.23.0)"] +symfont = ["sympy"] +type1 = ["xattr"] +ufo = ["fs (>=2.2.0,<3)"] +unicode = ["unicodedata2 (>=15.1.0)"] +woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] + +[[package]] +name = "fsspec" +version = "2024.2.0" +description = "File-system specification" +optional = false +python-versions = ">=3.8" +files = [ + {file = "fsspec-2024.2.0-py3-none-any.whl", hash = "sha256:817f969556fa5916bc682e02ca2045f96ff7f586d45110fcb76022063ad2c7d8"}, + {file = "fsspec-2024.2.0.tar.gz", hash = "sha256:b6ad1a679f760dda52b1168c859d01b7b80648ea6f7f7c7f5a8a91dc3f3ecb84"}, +] + +[package.extras] +abfs = ["adlfs"] +adl = ["adlfs"] +arrow = ["pyarrow (>=1)"] +dask = ["dask", "distributed"] +devel = ["pytest", "pytest-cov"] +dropbox = ["dropbox", "dropboxdrivefs", "requests"] +full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "dask", "distributed", "dropbox", "dropboxdrivefs", "fusepy", "gcsfs", "libarchive-c", "ocifs", "panel", "paramiko", "pyarrow (>=1)", "pygit2", "requests", "s3fs", "smbprotocol", "tqdm"] +fuse = ["fusepy"] +gcs = ["gcsfs"] +git = ["pygit2"] +github = ["requests"] +gs = ["gcsfs"] +gui = ["panel"] +hdfs = ["pyarrow (>=1)"] +http = ["aiohttp (!=4.0.0a0,!=4.0.0a1)"] +libarchive = ["libarchive-c"] +oci = ["ocifs"] +s3 = ["s3fs"] +sftp = ["paramiko"] +smb = ["smbprotocol"] +ssh = ["paramiko"] +tqdm = ["tqdm"] + +[[package]] +name = "grapheme" +version = "0.6.0" +description = "Unicode grapheme helpers" +optional = false +python-versions = "*" +files = [ + {file = "grapheme-0.6.0.tar.gz", hash = "sha256:44c2b9f21bbe77cfb05835fec230bd435954275267fea1858013b102f8603cca"}, +] + +[package.extras] +test = ["pytest", "sphinx", "sphinx-autobuild", "twine", "wheel"] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "h2" +version = "4.1.0" +description = "HTTP/2 State-Machine based protocol implementation" +optional = false +python-versions = ">=3.6.1" +files = [ + {file = "h2-4.1.0-py3-none-any.whl", hash = "sha256:03a46bcf682256c95b5fd9e9a99c1323584c3eec6440d379b9903d709476bc6d"}, + {file = "h2-4.1.0.tar.gz", hash = "sha256:a83aca08fbe7aacb79fec788c9c0bac936343560ed9ec18b82a13a12c28d2abb"}, +] + +[package.dependencies] +hpack = ">=4.0,<5" +hyperframe = ">=6.0,<7" + +[[package]] +name = "holoviews" +version = "1.18.3" +description = "Stop plotting your data - annotate your data and let it visualize itself." +optional = false +python-versions = ">=3.9" +files = [ + {file = "holoviews-1.18.3-py2.py3-none-any.whl", hash = "sha256:b94b96560b64a84c07e89115aaf9b226e6009684800ec84d3c88cbad122c0c46"}, + {file = "holoviews-1.18.3.tar.gz", hash = "sha256:578e30e89d72754f97a83ebe08198fec8e87cc7e49b25b9f31ec393f939ca500"}, +] + +[package.dependencies] +colorcet = "*" +numpy = ">=1.0" +packaging = "*" +pandas = ">=0.20.0" +panel = ">=1.0" +param = ">=1.12.0,<3.0" +pyviz-comms = ">=0.7.4" + +[package.extras] +all = ["bokeh (>=3.1)", "cftime", "codecov", "contourpy", "cudf", "dash (>=1.16)", "dask", "datashader (>=0.11.1)", "ffmpeg", "graphviz", "ibis-framework", "ipython (>=5.4.0)", "matplotlib (>=3)", "myst-nb (<1)", "nbconvert", "nbsite (>=0.8.4,<0.9.0)", "nbval", "netcdf4", "networkx", "notebook", "notebook (>=7.0)", "pillow", "playwright", "plotly (>=4.0)", "pooch", "pre-commit", "pyarrow", "pytest", "pytest-cov", "pytest-github-actions-annotate-failures", "pytest-playwright", "pytest-rerunfailures", "pytest-xdist", "ruff", "scikit-image", "scipy", "scipy (>=1.10)", "selenium", "shapely", "spatialpandas", "streamz (>=0.5.0)", "xarray (>=0.10.4)"] +build = ["param (>=1.7.0)", "pyct (>=0.4.4)", "setuptools (>=30.3.0)"] +doc = ["bokeh (>=3.1)", "cftime", "dash (>=1.16)", "dask", "datashader (>=0.11.1)", "ffmpeg", "graphviz", "ipython (>=5.4.0)", "matplotlib (>=3)", "myst-nb (<1)", "nbsite (>=0.8.4,<0.9.0)", "netcdf4", "networkx", "notebook", "notebook (>=7.0)", "pillow", "plotly (>=4.0)", "pooch", "pyarrow", "scikit-image", "scipy", "selenium", "shapely", "streamz (>=0.5.0)", "xarray (>=0.10.4)"] +examples = ["bokeh (>=3.1)", "cftime", "dash (>=1.16)", "dask", "datashader (>=0.11.1)", "ffmpeg", "ipython (>=5.4.0)", "matplotlib (>=3)", "netcdf4", "networkx", "notebook", "notebook (>=7.0)", "pillow", "plotly (>=4.0)", "pooch", "pyarrow", "scikit-image", "scipy", "shapely", "streamz (>=0.5.0)", "xarray (>=0.10.4)"] +examples-tests = ["bokeh (>=3.1)", "cftime", "dash (>=1.16)", "dask", "datashader (>=0.11.1)", "ffmpeg", "ipython (>=5.4.0)", "matplotlib (>=3)", "nbval", "netcdf4", "networkx", "notebook", "notebook (>=7.0)", "pillow", "plotly (>=4.0)", "pooch", "pyarrow", "scikit-image", "scipy", "shapely", "streamz (>=0.5.0)", "xarray (>=0.10.4)"] +lint = ["pre-commit", "ruff"] +notebook = ["ipython (>=5.4.0)", "notebook"] +recommended = ["bokeh (>=3.1)", "ipython (>=5.4.0)", "matplotlib (>=3)", "notebook"] +tests = ["bokeh (>=3.1)", "cftime", "contourpy", "dash (>=1.16)", "dask", "datashader (>=0.11.1)", "ffmpeg", "ibis-framework", "ipython (>=5.4.0)", "matplotlib (>=3)", "nbconvert", "networkx", "pillow", "plotly (>=4.0)", "pytest", "pytest-cov", "pytest-rerunfailures", "pytest-xdist", "scipy (>=1.10)", "selenium", "shapely", "spatialpandas", "xarray (>=0.10.4)"] +tests-ci = ["codecov", "pytest-github-actions-annotate-failures"] +tests-core = ["bokeh (>=3.1)", "contourpy", "ipython (>=5.4.0)", "matplotlib (>=3)", "nbconvert", "pillow", "plotly (>=4.0)", "pytest", "pytest-cov", "pytest-rerunfailures", "pytest-xdist"] +tests-gpu = ["bokeh (>=3.1)", "cftime", "contourpy", "cudf", "dash (>=1.16)", "dask", "datashader (>=0.11.1)", "ffmpeg", "ibis-framework", "ipython (>=5.4.0)", "matplotlib (>=3)", "nbconvert", "networkx", "pillow", "plotly (>=4.0)", "pytest", "pytest-cov", "pytest-rerunfailures", "pytest-xdist", "scipy (>=1.10)", "selenium", "shapely", "spatialpandas", "xarray (>=0.10.4)"] +tests-nb = ["nbval"] +ui = ["playwright", "pytest-playwright"] +unit-tests = ["bokeh (>=3.1)", "cftime", "contourpy", "dash (>=1.16)", "dask", "datashader (>=0.11.1)", "ffmpeg", "ibis-framework", "ipython (>=5.4.0)", "matplotlib (>=3)", "nbconvert", "netcdf4", "networkx", "notebook", "notebook (>=7.0)", "pillow", "plotly (>=4.0)", "pooch", "pre-commit", "pyarrow", "pytest", "pytest-cov", "pytest-rerunfailures", "pytest-xdist", "ruff", "scikit-image", "scipy", "scipy (>=1.10)", "selenium", "shapely", "spatialpandas", "streamz (>=0.5.0)", "xarray (>=0.10.4)"] + +[[package]] +name = "hpack" +version = "4.0.0" +description = "Pure-Python HPACK header compression" +optional = false +python-versions = ">=3.6.1" +files = [ + {file = "hpack-4.0.0-py3-none-any.whl", hash = "sha256:84a076fad3dc9a9f8063ccb8041ef100867b1878b25ef0ee63847a5d53818a6c"}, + {file = "hpack-4.0.0.tar.gz", hash = "sha256:fc41de0c63e687ebffde81187a948221294896f6bdc0ae2312708df339430095"}, +] + +[[package]] +name = "httpcore" +version = "1.0.2" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpcore-1.0.2-py3-none-any.whl", hash = "sha256:096cc05bca73b8e459a1fc3dcf585148f63e534eae4339559c9b8a8d6399acc7"}, + {file = "httpcore-1.0.2.tar.gz", hash = "sha256:9fc092e4799b26174648e54b74ed5f683132a464e95643b226e00c2ed2fa6535"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.13,<0.15" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<0.23.0)"] + +[[package]] +name = "httpx" +version = "0.26.0" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"}, + {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +h2 = {version = ">=3,<5", optional = true, markers = "extra == \"http2\""} +httpcore = "==1.*" +idna = "*" +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] + +[[package]] +name = "hvplot" +version = "0.9.2" +description = "A high-level plotting API for the PyData ecosystem built on HoloViews." +optional = false +python-versions = ">=3.8" +files = [ + {file = "hvplot-0.9.2-py2.py3-none-any.whl", hash = "sha256:271dda9ea8ea5fef2aff335010f7760c90281d7242d7bd8d5df262b4914ef990"}, + {file = "hvplot-0.9.2.tar.gz", hash = "sha256:9a8c9e9249139aaa3dee5f1cea0f93cf36374d179e986705fcddc2b92c470793"}, +] + +[package.dependencies] +bokeh = ">=1.0.0" +colorcet = ">=2" +holoviews = ">=1.11.0" +numpy = ">=1.15" +packaging = "*" +pandas = "*" +panel = ">=0.11.0" +param = ">=1.12.0,<3.0" + +[package.extras] +all = ["cartopy", "codecov", "dask", "dask (>=2021.3.0)", "datashader (>=0.6.5)", "fiona", "flake8", "fugue", "geopandas", "geoviews (>=1.9.0)", "ibis-framework", "intake (>=0.6.5)", "intake-parquet (>=0.2.3)", "intake-xarray (>=0.5.0)", "ipywidgets", "matplotlib", "nbsite (>=0.8.4)", "nbval", "networkx (>=2.6.3)", "notebook (>=5.4)", "numba (>=0.51.0)", "param (>=1.7.0)", "parameterized", "pillow (>=8.2.0)", "plotly", "polars", "pooch", "pooch (>=1.6.0)", "pre-commit", "pyct (>=0.4.4)", "pygraphviz", "pyproj", "pytest", "pytest-cov", "pytest-xdist", "python-snappy (>=0.6.0)", "rasterio", "rioxarray", "s3fs (>=2022.1.0)", "scikit-image (>=0.17.2)", "scipy", "scipy (>=1.5.3)", "selenium (>=3.141.0)", "setuptools (>=30.3.0)", "spatialpandas (>=0.4.3)", "sphinxext-rediraffe", "streamz (>=0.3.0)", "xarray", "xarray (>=0.18.2)"] +build = ["param (>=1.7.0)", "pyct (>=0.4.4)", "setuptools (>=30.3.0)"] +doc = ["cartopy", "dask (>=2021.3.0)", "datashader (>=0.6.5)", "fiona", "fugue", "geopandas", "geoviews (>=1.9.0)", "ibis-framework", "intake (>=0.6.5)", "intake-parquet (>=0.2.3)", "intake-xarray (>=0.5.0)", "ipywidgets", "matplotlib", "nbsite (>=0.8.4)", "networkx (>=2.6.3)", "notebook (>=5.4)", "numba (>=0.51.0)", "pillow (>=8.2.0)", "plotly", "polars", "pooch (>=1.6.0)", "pygraphviz", "pyproj", "python-snappy (>=0.6.0)", "rasterio", "rioxarray", "s3fs (>=2022.1.0)", "scikit-image (>=0.17.2)", "scipy (>=1.5.3)", "selenium (>=3.141.0)", "spatialpandas (>=0.4.3)", "sphinxext-rediraffe", "streamz (>=0.3.0)", "xarray (>=0.18.2)"] +examples = ["cartopy", "dask (>=2021.3.0)", "datashader (>=0.6.5)", "fiona", "fugue", "geopandas", "geoviews (>=1.9.0)", "ibis-framework", "intake (>=0.6.5)", "intake-parquet (>=0.2.3)", "intake-xarray (>=0.5.0)", "ipywidgets", "matplotlib", "networkx (>=2.6.3)", "notebook (>=5.4)", "numba (>=0.51.0)", "pillow (>=8.2.0)", "plotly", "polars", "pooch (>=1.6.0)", "pygraphviz", "pyproj", "python-snappy (>=0.6.0)", "rasterio", "rioxarray", "s3fs (>=2022.1.0)", "scikit-image (>=0.17.2)", "scipy (>=1.5.3)", "selenium (>=3.141.0)", "spatialpandas (>=0.4.3)", "streamz (>=0.3.0)", "xarray (>=0.18.2)"] +examples-tests = ["cartopy", "dask (>=2021.3.0)", "datashader (>=0.6.5)", "fiona", "fugue", "geopandas", "geoviews (>=1.9.0)", "ibis-framework", "intake (>=0.6.5)", "intake-parquet (>=0.2.3)", "intake-xarray (>=0.5.0)", "ipywidgets", "matplotlib", "nbval", "networkx (>=2.6.3)", "notebook (>=5.4)", "numba (>=0.51.0)", "pillow (>=8.2.0)", "plotly", "polars", "pooch (>=1.6.0)", "pygraphviz", "pyproj", "pytest-xdist", "python-snappy (>=0.6.0)", "rasterio", "rioxarray", "s3fs (>=2022.1.0)", "scikit-image (>=0.17.2)", "scipy (>=1.5.3)", "selenium (>=3.141.0)", "spatialpandas (>=0.4.3)", "streamz (>=0.3.0)", "xarray (>=0.18.2)"] +tests = ["codecov", "dask", "flake8", "fugue", "ibis-framework", "ipywidgets", "matplotlib", "parameterized", "plotly", "polars", "pooch", "pre-commit", "pytest", "pytest-cov", "scipy", "xarray"] +tests-core = ["codecov", "dask", "flake8", "ipywidgets", "matplotlib", "parameterized", "plotly", "pooch", "pre-commit", "pytest", "pytest-cov", "scipy", "xarray"] +tests-nb = ["nbval", "pytest-xdist"] + +[[package]] +name = "hyperframe" +version = "6.0.1" +description = "HTTP/2 framing layer for Python" +optional = false +python-versions = ">=3.6.1" +files = [ + {file = "hyperframe-6.0.1-py3-none-any.whl", hash = "sha256:0ec6bafd80d8ad2195c4f03aacba3a8265e57bc4cff261e802bf39970ed02a15"}, + {file = "hyperframe-6.0.1.tar.gz", hash = "sha256:ae510046231dc8e9ecb1a6586f63d2347bf4c8905914aa84ba585ae85f28a914"}, +] + +[[package]] +name = "iam-units" +version = "2023.9.12" +description = "Unit definitions for integrated-assessment research" +optional = false +python-versions = "*" +files = [ + {file = "iam_units-2023.9.12-py3-none-any.whl", hash = "sha256:dbd6065d6a991796ff7cfaf63a8e46c5d3b264d532a567251dd1f57d5d44547a"}, + {file = "iam_units-2023.9.12.tar.gz", hash = "sha256:89cfbcf5ab88d0dfd0b0639cabffe29ddf9f967f851184b3f3d86cd5ba7f43c9"}, +] + +[package.dependencies] +pint = ">=0.11" + +[package.extras] +tests = ["numpy", "pandas", "pytest", "pytest-cov"] +update = ["globalwarmingpotentials"] + +[[package]] +name = "idna" +version = "3.6" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ + {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, + {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, +] + +[[package]] +name = "importlib-metadata" +version = "7.0.1" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"}, + {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"}, +] + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] + +[[package]] +name = "jinja2" +version = "3.1.3" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=3.7" +files = [ + {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, + {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, +] + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "kiwisolver" +version = "1.4.5" +description = "A fast implementation of the Cassowary constraint solver" +optional = false +python-versions = ">=3.7" +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"}, +] + +[[package]] +name = "linkify-it-py" +version = "2.0.3" +description = "Links recognition library with FULL unicode support." +optional = false +python-versions = ">=3.7" +files = [ + {file = "linkify-it-py-2.0.3.tar.gz", hash = "sha256:68cda27e162e9215c17d786649d1da0021a451bdc436ef9e0fa0ba5234b9b048"}, + {file = "linkify_it_py-2.0.3-py3-none-any.whl", hash = "sha256:6bcbc417b0ac14323382aef5c5192c0075bf8a9d6b41820a2b66371eac6b6d79"}, +] + +[package.dependencies] +uc-micro-py = "*" + +[package.extras] +benchmark = ["pytest", "pytest-benchmark"] +dev = ["black", "flake8", "isort", "pre-commit", "pyproject-flake8"] +doc = ["myst-parser", "sphinx", "sphinx-book-theme"] +test = ["coverage", "pytest", "pytest-cov"] + +[[package]] +name = "locket" +version = "1.0.0" +description = "File-based locks for Python on Linux and Windows" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3"}, + {file = "locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632"}, +] + +[[package]] +name = "markdown" +version = "3.5.2" +description = "Python implementation of John Gruber's Markdown." +optional = false +python-versions = ">=3.8" +files = [ + {file = "Markdown-3.5.2-py3-none-any.whl", hash = "sha256:d43323865d89fc0cb9b20c75fc8ad313af307cc087e84b657d9eec768eddeadd"}, + {file = "Markdown-3.5.2.tar.gz", hash = "sha256:e1ac7b3dc550ee80e602e71c1d168002f062e49f1b11e26a36264dafd4df2ef8"}, +] + +[package.extras] +docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"] +testing = ["coverage", "pyyaml"] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "markupsafe" +version = "2.1.5" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.7" +files = [ + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, +] + +[[package]] +name = "matplotlib" +version = "3.8.3" +description = "Python plotting package" +optional = false +python-versions = ">=3.9" +files = [ + {file = "matplotlib-3.8.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:cf60138ccc8004f117ab2a2bad513cc4d122e55864b4fe7adf4db20ca68a078f"}, + {file = "matplotlib-3.8.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5f557156f7116be3340cdeef7f128fa99b0d5d287d5f41a16e169819dcf22357"}, + {file = "matplotlib-3.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f386cf162b059809ecfac3bcc491a9ea17da69fa35c8ded8ad154cd4b933d5ec"}, + {file = "matplotlib-3.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3c5f96f57b0369c288bf6f9b5274ba45787f7e0589a34d24bdbaf6d3344632f"}, + {file = "matplotlib-3.8.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:83e0f72e2c116ca7e571c57aa29b0fe697d4c6425c4e87c6e994159e0c008635"}, + {file = "matplotlib-3.8.3-cp310-cp310-win_amd64.whl", hash = "sha256:1c5c8290074ba31a41db1dc332dc2b62def469ff33766cbe325d32a3ee291aea"}, + {file = "matplotlib-3.8.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5184e07c7e1d6d1481862ee361905b7059f7fe065fc837f7c3dc11eeb3f2f900"}, + {file = "matplotlib-3.8.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d7e7e0993d0758933b1a241a432b42c2db22dfa37d4108342ab4afb9557cbe3e"}, + {file = "matplotlib-3.8.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04b36ad07eac9740fc76c2aa16edf94e50b297d6eb4c081e3add863de4bb19a7"}, + {file = "matplotlib-3.8.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c42dae72a62f14982f1474f7e5c9959fc4bc70c9de11cc5244c6e766200ba65"}, + {file = "matplotlib-3.8.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bf5932eee0d428192c40b7eac1399d608f5d995f975cdb9d1e6b48539a5ad8d0"}, + {file = "matplotlib-3.8.3-cp311-cp311-win_amd64.whl", hash = "sha256:40321634e3a05ed02abf7c7b47a50be50b53ef3eaa3a573847431a545585b407"}, + {file = "matplotlib-3.8.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:09074f8057917d17ab52c242fdf4916f30e99959c1908958b1fc6032e2d0f6d4"}, + {file = "matplotlib-3.8.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5745f6d0fb5acfabbb2790318db03809a253096e98c91b9a31969df28ee604aa"}, + {file = "matplotlib-3.8.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b97653d869a71721b639714b42d87cda4cfee0ee74b47c569e4874c7590c55c5"}, + {file = "matplotlib-3.8.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:242489efdb75b690c9c2e70bb5c6550727058c8a614e4c7716f363c27e10bba1"}, + {file = "matplotlib-3.8.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:83c0653c64b73926730bd9ea14aa0f50f202ba187c307a881673bad4985967b7"}, + {file = "matplotlib-3.8.3-cp312-cp312-win_amd64.whl", hash = "sha256:ef6c1025a570354297d6c15f7d0f296d95f88bd3850066b7f1e7b4f2f4c13a39"}, + {file = "matplotlib-3.8.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c4af3f7317f8a1009bbb2d0bf23dfaba859eb7dd4ccbd604eba146dccaaaf0a4"}, + {file = "matplotlib-3.8.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4c6e00a65d017d26009bac6808f637b75ceade3e1ff91a138576f6b3065eeeba"}, + {file = "matplotlib-3.8.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7b49ab49a3bea17802df6872f8d44f664ba8f9be0632a60c99b20b6db2165b7"}, + {file = "matplotlib-3.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6728dde0a3997396b053602dbd907a9bd64ec7d5cf99e728b404083698d3ca01"}, + {file = "matplotlib-3.8.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:813925d08fb86aba139f2d31864928d67511f64e5945ca909ad5bc09a96189bb"}, + {file = "matplotlib-3.8.3-cp39-cp39-win_amd64.whl", hash = "sha256:cd3a0c2be76f4e7be03d34a14d49ded6acf22ef61f88da600a18a5cd8b3c5f3c"}, + {file = "matplotlib-3.8.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fa93695d5c08544f4a0dfd0965f378e7afc410d8672816aff1e81be1f45dbf2e"}, + {file = "matplotlib-3.8.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9764df0e8778f06414b9d281a75235c1e85071f64bb5d71564b97c1306a2afc"}, + {file = "matplotlib-3.8.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5e431a09e6fab4012b01fc155db0ce6dccacdbabe8198197f523a4ef4805eb26"}, + {file = "matplotlib-3.8.3.tar.gz", hash = "sha256:7b416239e9ae38be54b028abbf9048aff5054a9aba5416bef0bd17f9162ce161"}, +] + +[package.dependencies] +contourpy = ">=1.0.1" +cycler = ">=0.10" +fonttools = ">=4.22.0" +kiwisolver = ">=1.3.1" +numpy = ">=1.21,<2" +packaging = ">=20.0" +pillow = ">=8" +pyparsing = ">=2.3.1" +python-dateutil = ">=2.7" + +[[package]] +name = "mdit-py-plugins" +version = "0.4.0" +description = "Collection of plugins for markdown-it-py" +optional = false +python-versions = ">=3.8" +files = [ + {file = "mdit_py_plugins-0.4.0-py3-none-any.whl", hash = "sha256:b51b3bb70691f57f974e257e367107857a93b36f322a9e6d44ca5bf28ec2def9"}, + {file = "mdit_py_plugins-0.4.0.tar.gz", hash = "sha256:d8ab27e9aed6c38aa716819fedfde15ca275715955f8a185a8e1cf90fb1d2c1b"}, +] + +[package.dependencies] +markdown-it-py = ">=1.0.0,<4.0.0" + +[package.extras] +code-style = ["pre-commit"] +rtd = ["myst-parser", "sphinx-book-theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + +[[package]] +name = "msgpack" +version = "1.0.7" +description = "MessagePack serializer" +optional = false +python-versions = ">=3.8" +files = [ + {file = "msgpack-1.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:04ad6069c86e531682f9e1e71b71c1c3937d6014a7c3e9edd2aa81ad58842862"}, + {file = "msgpack-1.0.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cca1b62fe70d761a282496b96a5e51c44c213e410a964bdffe0928e611368329"}, + {file = "msgpack-1.0.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e50ebce52f41370707f1e21a59514e3375e3edd6e1832f5e5235237db933c98b"}, + {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7b4f35de6a304b5533c238bee86b670b75b03d31b7797929caa7a624b5dda6"}, + {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28efb066cde83c479dfe5a48141a53bc7e5f13f785b92ddde336c716663039ee"}, + {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cb14ce54d9b857be9591ac364cb08dc2d6a5c4318c1182cb1d02274029d590d"}, + {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b573a43ef7c368ba4ea06050a957c2a7550f729c31f11dd616d2ac4aba99888d"}, + {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ccf9a39706b604d884d2cb1e27fe973bc55f2890c52f38df742bc1d79ab9f5e1"}, + {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cb70766519500281815dfd7a87d3a178acf7ce95390544b8c90587d76b227681"}, + {file = "msgpack-1.0.7-cp310-cp310-win32.whl", hash = "sha256:b610ff0f24e9f11c9ae653c67ff8cc03c075131401b3e5ef4b82570d1728f8a9"}, + {file = "msgpack-1.0.7-cp310-cp310-win_amd64.whl", hash = "sha256:a40821a89dc373d6427e2b44b572efc36a2778d3f543299e2f24eb1a5de65415"}, + {file = "msgpack-1.0.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:576eb384292b139821c41995523654ad82d1916da6a60cff129c715a6223ea84"}, + {file = "msgpack-1.0.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:730076207cb816138cf1af7f7237b208340a2c5e749707457d70705715c93b93"}, + {file = "msgpack-1.0.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:85765fdf4b27eb5086f05ac0491090fc76f4f2b28e09d9350c31aac25a5aaff8"}, + {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3476fae43db72bd11f29a5147ae2f3cb22e2f1a91d575ef130d2bf49afd21c46"}, + {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d4c80667de2e36970ebf74f42d1088cc9ee7ef5f4e8c35eee1b40eafd33ca5b"}, + {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b0bf0effb196ed76b7ad883848143427a73c355ae8e569fa538365064188b8e"}, + {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f9a7c509542db4eceed3dcf21ee5267ab565a83555c9b88a8109dcecc4709002"}, + {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:84b0daf226913133f899ea9b30618722d45feffa67e4fe867b0b5ae83a34060c"}, + {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ec79ff6159dffcc30853b2ad612ed572af86c92b5168aa3fc01a67b0fa40665e"}, + {file = "msgpack-1.0.7-cp311-cp311-win32.whl", hash = "sha256:3e7bf4442b310ff154b7bb9d81eb2c016b7d597e364f97d72b1acc3817a0fdc1"}, + {file = "msgpack-1.0.7-cp311-cp311-win_amd64.whl", hash = "sha256:3f0c8c6dfa6605ab8ff0611995ee30d4f9fcff89966cf562733b4008a3d60d82"}, + {file = "msgpack-1.0.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f0936e08e0003f66bfd97e74ee530427707297b0d0361247e9b4f59ab78ddc8b"}, + {file = "msgpack-1.0.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98bbd754a422a0b123c66a4c341de0474cad4a5c10c164ceed6ea090f3563db4"}, + {file = "msgpack-1.0.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b291f0ee7961a597cbbcc77709374087fa2a9afe7bdb6a40dbbd9b127e79afee"}, + {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebbbba226f0a108a7366bf4b59bf0f30a12fd5e75100c630267d94d7f0ad20e5"}, + {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e2d69948e4132813b8d1131f29f9101bc2c915f26089a6d632001a5c1349672"}, + {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdf38ba2d393c7911ae989c3bbba510ebbcdf4ecbdbfec36272abe350c454075"}, + {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:993584fc821c58d5993521bfdcd31a4adf025c7d745bbd4d12ccfecf695af5ba"}, + {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:52700dc63a4676669b341ba33520f4d6e43d3ca58d422e22ba66d1736b0a6e4c"}, + {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e45ae4927759289c30ccba8d9fdce62bb414977ba158286b5ddaf8df2cddb5c5"}, + {file = "msgpack-1.0.7-cp312-cp312-win32.whl", hash = "sha256:27dcd6f46a21c18fa5e5deed92a43d4554e3df8d8ca5a47bf0615d6a5f39dbc9"}, + {file = "msgpack-1.0.7-cp312-cp312-win_amd64.whl", hash = "sha256:7687e22a31e976a0e7fc99c2f4d11ca45eff652a81eb8c8085e9609298916dcf"}, + {file = "msgpack-1.0.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5b6ccc0c85916998d788b295765ea0e9cb9aac7e4a8ed71d12e7d8ac31c23c95"}, + {file = "msgpack-1.0.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:235a31ec7db685f5c82233bddf9858748b89b8119bf4538d514536c485c15fe0"}, + {file = "msgpack-1.0.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cab3db8bab4b7e635c1c97270d7a4b2a90c070b33cbc00c99ef3f9be03d3e1f7"}, + {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bfdd914e55e0d2c9e1526de210f6fe8ffe9705f2b1dfcc4aecc92a4cb4b533d"}, + {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36e17c4592231a7dbd2ed09027823ab295d2791b3b1efb2aee874b10548b7524"}, + {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38949d30b11ae5f95c3c91917ee7a6b239f5ec276f271f28638dec9156f82cfc"}, + {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ff1d0899f104f3921d94579a5638847f783c9b04f2d5f229392ca77fba5b82fc"}, + {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dc43f1ec66eb8440567186ae2f8c447d91e0372d793dfe8c222aec857b81a8cf"}, + {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dd632777ff3beaaf629f1ab4396caf7ba0bdd075d948a69460d13d44357aca4c"}, + {file = "msgpack-1.0.7-cp38-cp38-win32.whl", hash = "sha256:4e71bc4416de195d6e9b4ee93ad3f2f6b2ce11d042b4d7a7ee00bbe0358bd0c2"}, + {file = "msgpack-1.0.7-cp38-cp38-win_amd64.whl", hash = "sha256:8f5b234f567cf76ee489502ceb7165c2a5cecec081db2b37e35332b537f8157c"}, + {file = "msgpack-1.0.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfef2bb6ef068827bbd021017a107194956918ab43ce4d6dc945ffa13efbc25f"}, + {file = "msgpack-1.0.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:484ae3240666ad34cfa31eea7b8c6cd2f1fdaae21d73ce2974211df099a95d81"}, + {file = "msgpack-1.0.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3967e4ad1aa9da62fd53e346ed17d7b2e922cba5ab93bdd46febcac39be636fc"}, + {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dd178c4c80706546702c59529ffc005681bd6dc2ea234c450661b205445a34d"}, + {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6ffbc252eb0d229aeb2f9ad051200668fc3a9aaa8994e49f0cb2ffe2b7867e7"}, + {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:822ea70dc4018c7e6223f13affd1c5c30c0f5c12ac1f96cd8e9949acddb48a61"}, + {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:384d779f0d6f1b110eae74cb0659d9aa6ff35aaf547b3955abf2ab4c901c4819"}, + {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f64e376cd20d3f030190e8c32e1c64582eba56ac6dc7d5b0b49a9d44021b52fd"}, + {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5ed82f5a7af3697b1c4786053736f24a0efd0a1b8a130d4c7bfee4b9ded0f08f"}, + {file = "msgpack-1.0.7-cp39-cp39-win32.whl", hash = "sha256:f26a07a6e877c76a88e3cecac8531908d980d3d5067ff69213653649ec0f60ad"}, + {file = "msgpack-1.0.7-cp39-cp39-win_amd64.whl", hash = "sha256:1dc93e8e4653bdb5910aed79f11e165c85732067614f180f70534f056da97db3"}, + {file = "msgpack-1.0.7.tar.gz", hash = "sha256:572efc93db7a4d27e404501975ca6d2d9775705c2d922390d878fcf768d92c87"}, +] + +[[package]] +name = "numpy" +version = "1.23.5" +description = "NumPy is the fundamental package for array computing with Python." +optional = false +python-versions = ">=3.8" +files = [ + {file = "numpy-1.23.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9c88793f78fca17da0145455f0d7826bcb9f37da4764af27ac945488116efe63"}, + {file = "numpy-1.23.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e9f4c4e51567b616be64e05d517c79a8a22f3606499941d97bb76f2ca59f982d"}, + {file = "numpy-1.23.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7903ba8ab592b82014713c491f6c5d3a1cde5b4a3bf116404e08f5b52f6daf43"}, + {file = "numpy-1.23.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e05b1c973a9f858c74367553e236f287e749465f773328c8ef31abe18f691e1"}, + {file = "numpy-1.23.5-cp310-cp310-win32.whl", hash = "sha256:522e26bbf6377e4d76403826ed689c295b0b238f46c28a7251ab94716da0b280"}, + {file = "numpy-1.23.5-cp310-cp310-win_amd64.whl", hash = "sha256:dbee87b469018961d1ad79b1a5d50c0ae850000b639bcb1b694e9981083243b6"}, + {file = "numpy-1.23.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ce571367b6dfe60af04e04a1834ca2dc5f46004ac1cc756fb95319f64c095a96"}, + {file = "numpy-1.23.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56e454c7833e94ec9769fa0f86e6ff8e42ee38ce0ce1fa4cbb747ea7e06d56aa"}, + {file = "numpy-1.23.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5039f55555e1eab31124a5768898c9e22c25a65c1e0037f4d7c495a45778c9f2"}, + {file = "numpy-1.23.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58f545efd1108e647604a1b5aa809591ccd2540f468a880bedb97247e72db387"}, + {file = "numpy-1.23.5-cp311-cp311-win32.whl", hash = "sha256:b2a9ab7c279c91974f756c84c365a669a887efa287365a8e2c418f8b3ba73fb0"}, + {file = "numpy-1.23.5-cp311-cp311-win_amd64.whl", hash = "sha256:0cbe9848fad08baf71de1a39e12d1b6310f1d5b2d0ea4de051058e6e1076852d"}, + {file = "numpy-1.23.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f063b69b090c9d918f9df0a12116029e274daf0181df392839661c4c7ec9018a"}, + {file = "numpy-1.23.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0aaee12d8883552fadfc41e96b4c82ee7d794949e2a7c3b3a7201e968c7ecab9"}, + {file = "numpy-1.23.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92c8c1e89a1f5028a4c6d9e3ccbe311b6ba53694811269b992c0b224269e2398"}, + {file = "numpy-1.23.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d208a0f8729f3fb790ed18a003f3a57895b989b40ea4dce4717e9cf4af62c6bb"}, + {file = "numpy-1.23.5-cp38-cp38-win32.whl", hash = "sha256:06005a2ef6014e9956c09ba07654f9837d9e26696a0470e42beedadb78c11b07"}, + {file = "numpy-1.23.5-cp38-cp38-win_amd64.whl", hash = "sha256:ca51fcfcc5f9354c45f400059e88bc09215fb71a48d3768fb80e357f3b457e1e"}, + {file = "numpy-1.23.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8969bfd28e85c81f3f94eb4a66bc2cf1dbdc5c18efc320af34bffc54d6b1e38f"}, + {file = "numpy-1.23.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7ac231a08bb37f852849bbb387a20a57574a97cfc7b6cabb488a4fc8be176de"}, + {file = "numpy-1.23.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf837dc63ba5c06dc8797c398db1e223a466c7ece27a1f7b5232ba3466aafe3d"}, + {file = "numpy-1.23.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33161613d2269025873025b33e879825ec7b1d831317e68f4f2f0f84ed14c719"}, + {file = "numpy-1.23.5-cp39-cp39-win32.whl", hash = "sha256:af1da88f6bc3d2338ebbf0e22fe487821ea4d8e89053e25fa59d1d79786e7481"}, + {file = "numpy-1.23.5-cp39-cp39-win_amd64.whl", hash = "sha256:09b7847f7e83ca37c6e627682f145856de331049013853f344f37b0c9690e3df"}, + {file = "numpy-1.23.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:abdde9f795cf292fb9651ed48185503a2ff29be87770c3b8e2a14b0cd7aa16f8"}, + {file = "numpy-1.23.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9a909a8bae284d46bbfdefbdd4a262ba19d3bc9921b1e76126b1d21c3c34135"}, + {file = "numpy-1.23.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:01dd17cbb340bf0fc23981e52e1d18a9d4050792e8fb8363cecbf066a84b827d"}, + {file = "numpy-1.23.5.tar.gz", hash = "sha256:1b1766d6f397c18153d40015ddfc79ddb715cabadc04d2d228d4e5a8bc4ded1a"}, +] + +[[package]] +name = "openpyxl" +version = "3.1.2" +description = "A Python library to read/write Excel 2010 xlsx/xlsm files" +optional = false +python-versions = ">=3.6" +files = [ + {file = "openpyxl-3.1.2-py2.py3-none-any.whl", hash = "sha256:f91456ead12ab3c6c2e9491cf33ba6d08357d802192379bb482f1033ade496f5"}, + {file = "openpyxl-3.1.2.tar.gz", hash = "sha256:a6f5977418eff3b2d5500d54d9db50c8277a368436f4e4f8ddb1be3422870184"}, +] + +[package.dependencies] +et-xmlfile = "*" + +[[package]] +name = "packaging" +version = "23.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, +] + +[[package]] +name = "pandas" +version = "2.2.0" +description = "Powerful data structures for data analysis, time series, and statistics" +optional = false +python-versions = ">=3.9" +files = [ + {file = "pandas-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670"}, + {file = "pandas-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a"}, + {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18"}, + {file = "pandas-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e"}, + {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5"}, + {file = "pandas-2.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1"}, + {file = "pandas-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430"}, + {file = "pandas-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5"}, + {file = "pandas-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b"}, + {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f"}, + {file = "pandas-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88"}, + {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3"}, + {file = "pandas-2.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71"}, + {file = "pandas-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9"}, + {file = "pandas-2.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc"}, + {file = "pandas-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1"}, + {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440"}, + {file = "pandas-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106"}, + {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e"}, + {file = "pandas-2.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042"}, + {file = "pandas-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30"}, + {file = "pandas-2.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9f66419d4a41132eb7e9a73dcec9486cf5019f52d90dd35547af11bc58f8637d"}, + {file = "pandas-2.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:57abcaeda83fb80d447f28ab0cc7b32b13978f6f733875ebd1ed14f8fbc0f4ab"}, + {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e60f1f7dba3c2d5ca159e18c46a34e7ca7247a73b5dd1a22b6d59707ed6b899a"}, + {file = "pandas-2.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb61dc8567b798b969bcc1fc964788f5a68214d333cade8319c7ab33e2b5d88a"}, + {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:52826b5f4ed658fa2b729264d63f6732b8b29949c7fd234510d57c61dbeadfcd"}, + {file = "pandas-2.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bde2bc699dbd80d7bc7f9cab1e23a95c4375de615860ca089f34e7c64f4a8de7"}, + {file = "pandas-2.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:3de918a754bbf2da2381e8a3dcc45eede8cd7775b047b923f9006d5f876802ae"}, + {file = "pandas-2.2.0.tar.gz", hash = "sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2"}, +] + +[package.dependencies] +numpy = {version = ">=1.22.4,<2", markers = "python_version < \"3.11\""} +python-dateutil = ">=2.8.2" +pytz = ">=2020.1" +tzdata = ">=2022.7" + +[package.extras] +all = ["PyQt5 (>=5.15.9)", "SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)", "beautifulsoup4 (>=4.11.2)", "bottleneck (>=1.3.6)", "dataframe-api-compat (>=0.1.7)", "fastparquet (>=2022.12.0)", "fsspec (>=2022.11.0)", "gcsfs (>=2022.11.0)", "html5lib (>=1.1)", "hypothesis (>=6.46.1)", "jinja2 (>=3.1.2)", "lxml (>=4.9.2)", "matplotlib (>=3.6.3)", "numba (>=0.56.4)", "numexpr (>=2.8.4)", "odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "pandas-gbq (>=0.19.0)", "psycopg2 (>=2.9.6)", "pyarrow (>=10.0.1)", "pymysql (>=1.0.2)", "pyreadstat (>=1.2.0)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "qtpy (>=2.3.0)", "s3fs (>=2022.11.0)", "scipy (>=1.10.0)", "tables (>=3.8.0)", "tabulate (>=0.9.0)", "xarray (>=2022.12.0)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)", "zstandard (>=0.19.0)"] +aws = ["s3fs (>=2022.11.0)"] +clipboard = ["PyQt5 (>=5.15.9)", "qtpy (>=2.3.0)"] +compression = ["zstandard (>=0.19.0)"] +computation = ["scipy (>=1.10.0)", "xarray (>=2022.12.0)"] +consortium-standard = ["dataframe-api-compat (>=0.1.7)"] +excel = ["odfpy (>=1.4.1)", "openpyxl (>=3.1.0)", "python-calamine (>=0.1.7)", "pyxlsb (>=1.0.10)", "xlrd (>=2.0.1)", "xlsxwriter (>=3.0.5)"] +feather = ["pyarrow (>=10.0.1)"] +fss = ["fsspec (>=2022.11.0)"] +gcp = ["gcsfs (>=2022.11.0)", "pandas-gbq (>=0.19.0)"] +hdf5 = ["tables (>=3.8.0)"] +html = ["beautifulsoup4 (>=4.11.2)", "html5lib (>=1.1)", "lxml (>=4.9.2)"] +mysql = ["SQLAlchemy (>=2.0.0)", "pymysql (>=1.0.2)"] +output-formatting = ["jinja2 (>=3.1.2)", "tabulate (>=0.9.0)"] +parquet = ["pyarrow (>=10.0.1)"] +performance = ["bottleneck (>=1.3.6)", "numba (>=0.56.4)", "numexpr (>=2.8.4)"] +plot = ["matplotlib (>=3.6.3)"] +postgresql = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "psycopg2 (>=2.9.6)"] +spss = ["pyreadstat (>=1.2.0)"] +sql-other = ["SQLAlchemy (>=2.0.0)", "adbc-driver-postgresql (>=0.8.0)", "adbc-driver-sqlite (>=0.8.0)"] +test = ["hypothesis (>=6.46.1)", "pytest (>=7.3.2)", "pytest-xdist (>=2.2.0)"] +xml = ["lxml (>=4.9.2)"] + +[[package]] +name = "panel" +version = "1.3.8" +description = "The powerful data exploration & web app framework for Python." +optional = false +python-versions = ">=3.9" +files = [ + {file = "panel-1.3.8-py2.py3-none-any.whl", hash = "sha256:49bf3931986a0ddf3f7b4bda3c65c6a311d5277524acdb4e0bff69cba6bf5775"}, + {file = "panel-1.3.8.tar.gz", hash = "sha256:809afd2b861747a31d6ddaadbbc7c25b8dab392dc78256f68b759214113c5be3"}, +] + +[package.dependencies] +bleach = "*" +bokeh = ">=3.2.0,<3.4.0" +linkify-it-py = "*" +markdown = "*" +markdown-it-py = "*" +mdit-py-plugins = "*" +pandas = ">=1.2" +param = ">=2.0.0,<3.0" +pyviz-comms = ">=2.0.0" +requests = "*" +tqdm = ">=4.48.0" +typing-extensions = "*" +xyzservices = ">=2021.09.1" + +[package.extras] +all = ["aiohttp", "altair", "anywidget", "channels", "croniter", "datashader", "diskcache", "django (<4)", "fastparquet", "flake8", "folium", "graphviz", "holoviews (>=1.16.0)", "hvplot", "ipyleaflet", "ipympl", "ipython (>=7.0)", "ipyvolume", "ipyvuetify", "ipywidgets", "ipywidgets-bokeh", "jupyter-bokeh (>=3.0.7)", "jupyter-server", "jupyterlab", "lxml", "matplotlib", "nbsite (>=0.8.4)", "nbval", "networkx (>=2.5)", "numba (<0.58)", "numpy", "pandas (<2.1.0)", "pandas (>=1.3)", "parameterized", "pillow", "playwright", "plotly", "plotly (>=4.0)", "pre-commit", "psutil", "pydeck", "pygraphviz", "pyinstrument (>=4.0)", "pytest", "pytest-asyncio (<0.22)", "pytest-cov", "pytest-playwright", "pytest-rerunfailures", "pytest-xdist", "python-graphviz", "pyvista", "reacton", "scikit-image", "scikit-learn", "scipy", "seaborn", "streamz", "twine", "vega-datasets", "vtk", "xarray", "xgboost"] +all-pip = ["aiohttp", "altair", "anywidget", "channels", "croniter", "datashader", "diskcache", "django (<4)", "fastparquet", "flake8", "folium", "graphviz", "holoviews (>=1.16.0)", "hvplot", "ipyleaflet", "ipympl", "ipython (>=7.0)", "ipyvolume", "ipyvuetify", "ipywidgets", "ipywidgets-bokeh", "jupyter-bokeh (>=3.0.7)", "jupyter-server", "jupyterlab", "lxml", "matplotlib", "nbsite (>=0.8.4)", "nbval", "networkx (>=2.5)", "numba (<0.58)", "numpy", "pandas (<2.1.0)", "pandas (>=1.3)", "parameterized", "pillow", "playwright", "plotly", "plotly (>=4.0)", "pre-commit", "psutil", "pydeck", "pyinstrument (>=4.0)", "pytest", "pytest-asyncio (<0.22)", "pytest-cov", "pytest-playwright", "pytest-rerunfailures", "pytest-xdist", "pyvista", "reacton", "scikit-image", "scikit-learn", "scipy", "seaborn", "streamz", "twine", "vega-datasets", "vtk", "xarray", "xgboost"] +build = ["bleach", "bokeh (>=3.3.0,<3.4.0)", "cryptography (<39)", "markdown", "packaging", "param (>=2.0.0)", "pyviz-comms (>=2.0.0)", "requests", "setuptools (>=42)", "tqdm (>=4.48.0)", "urllib3 (<2.0)"] +doc = ["holoviews (>=1.16.0)", "jupyterlab", "lxml", "matplotlib", "nbsite (>=0.8.4)", "pandas (<2.1.0)", "pillow", "plotly"] +examples = ["aiohttp", "altair", "channels", "croniter", "datashader", "django (<4)", "fastparquet", "folium", "graphviz", "holoviews (>=1.16.0)", "hvplot", "ipyleaflet", "ipympl", "ipyvolume", "ipyvuetify", "ipywidgets", "ipywidgets-bokeh", "jupyter-bokeh (>=3.0.7)", "networkx (>=2.5)", "plotly (>=4.0)", "pydeck", "pygraphviz", "pyinstrument (>=4.0)", "python-graphviz", "pyvista", "reacton", "scikit-image", "scikit-learn", "seaborn", "streamz", "vega-datasets", "vtk", "xarray", "xgboost"] +recommended = ["holoviews (>=1.16.0)", "jupyterlab", "matplotlib", "pillow", "plotly"] +tests = ["altair", "anywidget", "diskcache", "flake8", "folium", "holoviews (>=1.16.0)", "ipympl", "ipython (>=7.0)", "ipyvuetify", "ipywidgets-bokeh", "nbval", "numba (<0.58)", "numpy", "pandas (>=1.3)", "parameterized", "pre-commit", "psutil", "pytest", "pytest-asyncio (<0.22)", "pytest-cov", "pytest-rerunfailures", "pytest-xdist", "reacton", "scipy", "twine"] +tests-core = ["altair", "anywidget", "diskcache", "flake8", "folium", "holoviews (>=1.16.0)", "ipython (>=7.0)", "nbval", "numpy", "pandas (>=1.3)", "parameterized", "pre-commit", "psutil", "pytest", "pytest-asyncio (<0.22)", "pytest-cov", "pytest-rerunfailures", "pytest-xdist", "scipy"] +ui = ["jupyter-server", "playwright", "pytest-playwright"] + +[[package]] +name = "param" +version = "2.0.2" +description = "Make your Python code clearer and more reliable by declaring Parameters." +optional = false +python-versions = ">=3.8" +files = [ + {file = "param-2.0.2-py3-none-any.whl", hash = "sha256:b269fd7397886ec609e544f81035fa52e1950da0e76d20080bfeca3d7a0317ca"}, + {file = "param-2.0.2.tar.gz", hash = "sha256:785845a727a588eb94c7666d80551c7e2bb97d4309d3507beab66f95e57f7527"}, +] + +[package.extras] +all = ["param[doc]", "param[lint]", "param[tests-full]"] +doc = ["nbsite (==0.8.4)", "param[examples]", "sphinx-remove-toctrees"] +examples = ["aiohttp", "pandas", "panel"] +lint = ["flake8", "pre-commit"] +tests = ["coverage[toml]", "pytest", "pytest-asyncio"] +tests-deser = ["odfpy", "openpyxl", "pyarrow", "tables", "xlrd"] +tests-examples = ["nbval", "param[examples]", "pytest", "pytest-asyncio", "pytest-xdist"] +tests-full = ["cloudpickle", "gmpy", "ipython", "jsonschema", "nest-asyncio", "numpy", "pandas", "param[tests-deser]", "param[tests-examples]", "param[tests]"] + +[[package]] +name = "partd" +version = "1.4.1" +description = "Appendable key-value storage" +optional = false +python-versions = ">=3.7" +files = [ + {file = "partd-1.4.1-py3-none-any.whl", hash = "sha256:27e766663d36c161e2827aa3e28541c992f0b9527d3cca047e13fb3acdb989e6"}, + {file = "partd-1.4.1.tar.gz", hash = "sha256:56c25dd49e6fea5727e731203c466c6e092f308d8f0024e199d02f6aa2167f67"}, +] + +[package.dependencies] +locket = "*" +toolz = "*" + +[package.extras] +complete = ["blosc", "numpy (>=1.9.0)", "pandas (>=0.19.0)", "pyzmq"] + +[[package]] +name = "pillow" +version = "10.2.0" +description = "Python Imaging Library (Fork)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, + {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, + {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, + {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, + {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, + {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, + {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, + {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, + {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, + {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, + {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, + {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, + {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, + {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, + {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, + {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, + {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, +] + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] + +[[package]] +name = "pint" +version = "0.23" +description = "Physical quantities module" +optional = false +python-versions = ">=3.9" +files = [ + {file = "Pint-0.23-py3-none-any.whl", hash = "sha256:df79b6b5f1beb7ed0cd55d91a0766fc55f972f757a9364e844958c05e8eb66f9"}, + {file = "Pint-0.23.tar.gz", hash = "sha256:e1509b91606dbc52527c600a4ef74ffac12fff70688aff20e9072409346ec9b4"}, +] + +[package.dependencies] +typing-extensions = "*" + +[package.extras] +babel = ["babel (<=2.8)"] +bench = ["pytest", "pytest-codspeed"] +dask = ["dask"] +mip = ["mip (>=1.13)"] +numpy = ["numpy (>=1.19.5)"] +pandas = ["pint-pandas (>=0.3)"] +test = ["pytest", "pytest-benchmark", "pytest-cov", "pytest-mpl", "pytest-subtests"] +testbase = ["pytest", "pytest-benchmark", "pytest-cov", "pytest-subtests"] +uncertainties = ["uncertainties (>=3.1.6)"] +xarray = ["xarray"] + +[[package]] +name = "psutil" +version = "5.9.8" +description = "Cross-platform lib for process and system monitoring in Python." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +files = [ + {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"}, + {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"}, + {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"}, + {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"}, + {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"}, + {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"}, + {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"}, + {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"}, + {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"}, + {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"}, +] + +[package.extras] +test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] + +[[package]] +name = "pyam-iamc" +version = "1.7.0" +description = "Analysis & visualization of integrated-assessment scenarios" +optional = false +python-versions = "<3.11,>=3.7.1" +files = [ + {file = "pyam-iamc-1.7.0.tar.gz", hash = "sha256:0af22a23585ed30363e8755a7e2ac4a646df71c5375f57b3a9124fb567cd32e4"}, + {file = "pyam_iamc-1.7.0-py3-none-any.whl", hash = "sha256:512a67ea145a09ab7db34b49ca70e81800f602ee46ad75a179c51f0a95cafb9b"}, +] + +[package.dependencies] +httpx = {version = "*", extras = ["http2"]} +iam-units = ">=2020.4.21" +importlib-metadata = "*" +matplotlib = ">=3.2.0" +numpy = ">=1.19.0,<1.24" +openpyxl = "*" +pandas = ">=1.2.0" +pint = ">=0.13" +pyjwt = "*" +PyYAML = "*" +requests = "*" +scipy = "*" +seaborn = "*" +setuptools = ">=41" +setuptools-scm = "*" +six = "*" +wquantiles = "*" +xlsxwriter = "*" + +[package.extras] +docs = ["autodocsumm", "kaleido", "nbsphinx", "numpydoc", "pillow", "sphinx", "sphinx-gallery", "sphinxcontrib-bibtex (<2.0)", "sphinxcontrib-programoutput"] +optional-io-formats = ["datapackage", "pandas-datareader", "unfccc-di-api (>=3.0.1)", "xlrd"] +optional-plotting = ["plotly"] +tests = ["coverage", "coveralls", "pytest", "pytest-cov", "pytest-mpl"] +tutorials = ["ipykernel", "jupyter-client", "nbconvert", "nbformat", "pypandoc"] + +[[package]] +name = "pyct" +version = "0.5.0" +description = "Python package common tasks for users (e.g. copy examples, fetch data, ...)" +optional = false +python-versions = ">=3.7" +files = [ + {file = "pyct-0.5.0-py2.py3-none-any.whl", hash = "sha256:a4038a8885059ab8cac6f946ea30e0b5e6bdbe0b92b6723f06737035f9d65e8c"}, + {file = "pyct-0.5.0.tar.gz", hash = "sha256:dd9f4ac5cbd8e37c352c04036062d3c5f67efec76d404761ef16b0cbf26aa6a0"}, +] + +[package.dependencies] +param = ">=1.7.0" + +[package.extras] +build = ["param (>=1.7.0)", "setuptools"] +cmd = ["pyyaml", "requests"] +doc = ["nbsite", "sphinx-ioam-theme"] +tests = ["flake8", "pytest"] + +[[package]] +name = "pygments" +version = "2.17.2" +description = "Pygments is a syntax highlighting package written in Python." +optional = false +python-versions = ">=3.7" +files = [ + {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, + {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, +] + +[package.extras] +plugins = ["importlib-metadata"] +windows-terminal = ["colorama (>=0.4.6)"] + +[[package]] +name = "pyjwt" +version = "2.8.0" +description = "JSON Web Token implementation in Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"}, + {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"}, +] + +[package.extras] +crypto = ["cryptography (>=3.4.0)"] +dev = ["coverage[toml] (==5.0.4)", "cryptography (>=3.4.0)", "pre-commit", "pytest (>=6.0.0,<7.0.0)", "sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] +docs = ["sphinx (>=4.5.0,<5.0.0)", "sphinx-rtd-theme", "zope.interface"] +tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] + +[[package]] +name = "pyparsing" +version = "3.1.1" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +optional = false +python-versions = ">=3.6.8" +files = [ + {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, + {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, +] + +[package.extras] +diagrams = ["jinja2", "railroad-diagrams"] + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ + {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, + {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, +] + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "pytz" +version = "2024.1" +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"}, +] + +[[package]] +name = "pyviz-comms" +version = "3.0.1" +description = "A JupyterLab extension for rendering HoloViz content." +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyviz_comms-3.0.1-py3-none-any.whl", hash = "sha256:0130e952b942906a0eb5fcbcc750262a8e4f565a9b06b3c0d8d631f33b61b78e"}, + {file = "pyviz_comms-3.0.1.tar.gz", hash = "sha256:427c33a5a81780db9b9e757f0675f65ea2292d9a642a2d291cfb5cae6cd46991"}, +] + +[package.dependencies] +param = "*" + +[package.extras] +all = ["pyviz-comms[build]", "pyviz-comms[tests]"] +build = ["jupyterlab (>=4.0,<5.0)", "keyring", "rfc3986", "setuptools (>=40.8.0)", "twine"] +tests = ["flake8", "pytest"] + +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.7" +files = [ + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, +] + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "rich" +version = "13.7.0" +description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" +optional = false +python-versions = ">=3.7.0" +files = [ + {file = "rich-13.7.0-py3-none-any.whl", hash = "sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235"}, + {file = "rich-13.7.0.tar.gz", hash = "sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa"}, +] + +[package.dependencies] +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" + +[package.extras] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + +[[package]] +name = "scipy" +version = "1.12.0" +description = "Fundamental algorithms for scientific computing in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "scipy-1.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78e4402e140879387187f7f25d91cc592b3501a2e51dfb320f48dfb73565f10b"}, + {file = "scipy-1.12.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5f00ebaf8de24d14b8449981a2842d404152774c1a1d880c901bf454cb8e2a1"}, + {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e53958531a7c695ff66c2e7bb7b79560ffdc562e2051644c5576c39ff8efb563"}, + {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e32847e08da8d895ce09d108a494d9eb78974cf6de23063f93306a3e419960c"}, + {file = "scipy-1.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c1020cad92772bf44b8e4cdabc1df5d87376cb219742549ef69fc9fd86282dd"}, + {file = "scipy-1.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:75ea2a144096b5e39402e2ff53a36fecfd3b960d786b7efd3c180e29c39e53f2"}, + {file = "scipy-1.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:408c68423f9de16cb9e602528be4ce0d6312b05001f3de61fe9ec8b1263cad08"}, + {file = "scipy-1.12.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5adfad5dbf0163397beb4aca679187d24aec085343755fcdbdeb32b3679f254c"}, + {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3003652496f6e7c387b1cf63f4bb720951cfa18907e998ea551e6de51a04467"}, + {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b8066bce124ee5531d12a74b617d9ac0ea59245246410e19bca549656d9a40a"}, + {file = "scipy-1.12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8bee4993817e204d761dba10dbab0774ba5a8612e57e81319ea04d84945375ba"}, + {file = "scipy-1.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:a24024d45ce9a675c1fb8494e8e5244efea1c7a09c60beb1eeb80373d0fecc70"}, + {file = "scipy-1.12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e7e76cc48638228212c747ada851ef355c2bb5e7f939e10952bc504c11f4e372"}, + {file = "scipy-1.12.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:f7ce148dffcd64ade37b2df9315541f9adad6efcaa86866ee7dd5db0c8f041c3"}, + {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c39f92041f490422924dfdb782527a4abddf4707616e07b021de33467f917bc"}, + {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7ebda398f86e56178c2fa94cad15bf457a218a54a35c2a7b4490b9f9cb2676c"}, + {file = "scipy-1.12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:95e5c750d55cf518c398a8240571b0e0782c2d5a703250872f36eaf737751338"}, + {file = "scipy-1.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:e646d8571804a304e1da01040d21577685ce8e2db08ac58e543eaca063453e1c"}, + {file = "scipy-1.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:913d6e7956c3a671de3b05ccb66b11bc293f56bfdef040583a7221d9e22a2e35"}, + {file = "scipy-1.12.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba1b0c7256ad75401c73e4b3cf09d1f176e9bd4248f0d3112170fb2ec4db067"}, + {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:730badef9b827b368f351eacae2e82da414e13cf8bd5051b4bdfd720271a5371"}, + {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6546dc2c11a9df6926afcbdd8a3edec28566e4e785b915e849348c6dd9f3f490"}, + {file = "scipy-1.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:196ebad3a4882081f62a5bf4aeb7326aa34b110e533aab23e4374fcccb0890dc"}, + {file = "scipy-1.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:b360f1b6b2f742781299514e99ff560d1fe9bd1bff2712894b52abe528d1fd1e"}, + {file = "scipy-1.12.0.tar.gz", hash = "sha256:4bf5abab8a36d20193c698b0f1fc282c1d083c94723902c447e5d2f1780936a3"}, +] + +[package.dependencies] +numpy = ">=1.22.4,<1.29.0" + +[package.extras] +dev = ["click", "cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] +doc = ["jupytext", "matplotlib (>2)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] +test = ["asv", "gmpy2", "hypothesis", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] + +[[package]] +name = "seaborn" +version = "0.13.2" +description = "Statistical data visualization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "seaborn-0.13.2-py3-none-any.whl", hash = "sha256:636f8336facf092165e27924f223d3c62ca560b1f2bb5dff7ab7fad265361987"}, + {file = "seaborn-0.13.2.tar.gz", hash = "sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7"}, +] + +[package.dependencies] +matplotlib = ">=3.4,<3.6.1 || >3.6.1" +numpy = ">=1.20,<1.24.0 || >1.24.0" +pandas = ">=1.2" + +[package.extras] +dev = ["flake8", "flit", "mypy", "pandas-stubs", "pre-commit", "pytest", "pytest-cov", "pytest-xdist"] +docs = ["ipykernel", "nbconvert", "numpydoc", "pydata_sphinx_theme (==0.10.0rc2)", "pyyaml", "sphinx (<6.0.0)", "sphinx-copybutton", "sphinx-design", "sphinx-issues"] +stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"] + +[[package]] +name = "setuptools" +version = "69.1.0" +description = "Easily download, build, install, upgrade, and uninstall Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-69.1.0-py3-none-any.whl", hash = "sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6"}, + {file = "setuptools-69.1.0.tar.gz", hash = "sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] + +[[package]] +name = "setuptools-scm" +version = "8.0.4" +description = "the blessed package to manage your versions by scm tags" +optional = false +python-versions = ">=3.8" +files = [ + {file = "setuptools-scm-8.0.4.tar.gz", hash = "sha256:b5f43ff6800669595193fd09891564ee9d1d7dcb196cab4b2506d53a2e1c95c7"}, + {file = "setuptools_scm-8.0.4-py3-none-any.whl", hash = "sha256:b47844cd2a84b83b3187a5782c71128c28b4c94cad8bfb871da2784a5cb54c4f"}, +] + +[package.dependencies] +packaging = ">=20" +setuptools = "*" +tomli = {version = ">=1", markers = "python_version < \"3.11\""} +typing-extensions = "*" + +[package.extras] +docs = ["entangled-cli[rich]", "mkdocs", "mkdocs-entangled-plugin", "mkdocs-material", "mkdocstrings[python]", "pygments"] +rich = ["rich"] +test = ["build", "pytest", "rich", "wheel"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, + {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, +] + +[[package]] +name = "sniffio" +version = "1.3.0" +description = "Sniff out which async library your code is running under" +optional = false +python-versions = ">=3.7" +files = [ + {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"}, + {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"}, +] + +[[package]] +name = "sortedcontainers" +version = "2.4.0" +description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" +optional = false +python-versions = "*" +files = [ + {file = "sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0"}, + {file = "sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88"}, +] + +[[package]] +name = "tblib" +version = "3.0.0" +description = "Traceback serialization library." +optional = false +python-versions = ">=3.8" +files = [ + {file = "tblib-3.0.0-py3-none-any.whl", hash = "sha256:80a6c77e59b55e83911e1e607c649836a69c103963c5f28a46cbeef44acf8129"}, + {file = "tblib-3.0.0.tar.gz", hash = "sha256:93622790a0a29e04f0346458face1e144dc4d32f493714c6c3dff82a4adb77e6"}, +] + +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] + +[[package]] +name = "toolz" +version = "0.12.1" +description = "List processing tools and functional utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "toolz-0.12.1-py3-none-any.whl", hash = "sha256:d22731364c07d72eea0a0ad45bafb2c2937ab6fd38a3507bf55eae8744aa7d85"}, + {file = "toolz-0.12.1.tar.gz", hash = "sha256:ecca342664893f177a13dac0e6b41cbd8ac25a358e5f215316d43e2100224f4d"}, +] + +[[package]] +name = "tornado" +version = "6.4" +description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." +optional = false +python-versions = ">= 3.8" +files = [ + {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"}, + {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"}, + {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"}, + {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"}, + {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, +] + +[[package]] +name = "tqdm" +version = "4.66.2" +description = "Fast, Extensible Progress Meter" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, + {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, +] + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["pytest (>=6)", "pytest-cov", "pytest-timeout", "pytest-xdist"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + +[[package]] +name = "typing-extensions" +version = "4.9.0" +description = "Backported and Experimental Type Hints for Python 3.8+" +optional = false +python-versions = ">=3.8" +files = [ + {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, + {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, +] + +[[package]] +name = "tzdata" +version = "2024.1" +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"}, +] + +[[package]] +name = "uc-micro-py" +version = "1.0.3" +description = "Micro subset of unicode data files for linkify-it-py projects." +optional = false +python-versions = ">=3.7" +files = [ + {file = "uc-micro-py-1.0.3.tar.gz", hash = "sha256:d321b92cff673ec58027c04015fcaa8bb1e005478643ff4a500882eaab88c48a"}, + {file = "uc_micro_py-1.0.3-py3-none-any.whl", hash = "sha256:db1dffff340817673d7b466ec86114a9dc0e9d4d9b5ba229d9d60e5c12600cd5"}, +] + +[package.extras] +test = ["coverage", "pytest", "pytest-cov"] + +[[package]] +name = "urllib3" +version = "2.2.0" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.8" +files = [ + {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, + {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, +] + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +h2 = ["h2 (>=4,<5)"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "webencodings" +version = "0.5.1" +description = "Character encoding aliases for legacy web content" +optional = false +python-versions = "*" +files = [ + {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"}, + {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"}, +] + +[[package]] +name = "wquantiles" +version = "0.6" +description = "Weighted quantiles, including weighted median, based on numpy" +optional = false +python-versions = ">=3.6" +files = [ + {file = "wquantiles-0.6-py3-none-any.whl", hash = "sha256:1b90d68fa05251bb96f8806a346e8d7dec9a9bb99f381ad5094707b46ab85218"}, + {file = "wquantiles-0.6.tar.gz", hash = "sha256:a9e5b61277c8bf414394131bba4af0fc565de379ca73d6f7a336ba60184fa5c4"}, +] + +[package.dependencies] +numpy = ">=1.18" + +[[package]] +name = "xarray" +version = "2024.1.1" +description = "N-D labeled arrays and datasets in Python" +optional = false +python-versions = ">=3.9" +files = [ + {file = "xarray-2024.1.1-py3-none-any.whl", hash = "sha256:0bec81303b088c8df4f075e1579c00cfd7e5069688e4434007f0b8d7df17fc1c"}, + {file = "xarray-2024.1.1.tar.gz", hash = "sha256:a1ba2d87a74892e213c9c83f4a462dbcdf68212320a4e31b34bd789ba7a64e35"}, +] + +[package.dependencies] +numpy = ">=1.23" +packaging = ">=22" +pandas = ">=1.5" + +[package.extras] +accel = ["bottleneck", "flox", "numbagg", "opt-einsum", "scipy"] +complete = ["xarray[accel,io,parallel,viz]"] +io = ["cftime", "fsspec", "h5netcdf", "netCDF4", "pooch", "pydap", "scipy", "zarr"] +parallel = ["dask[complete]"] +viz = ["matplotlib", "nc-time-axis", "seaborn"] + +[[package]] +name = "xlsxwriter" +version = "3.1.9" +description = "A Python module for creating Excel XLSX files." +optional = false +python-versions = ">=3.6" +files = [ + {file = "XlsxWriter-3.1.9-py3-none-any.whl", hash = "sha256:b61c1a0c786f82644936c0936ec96ee96cd3afb9440094232f7faef9b38689f0"}, + {file = "XlsxWriter-3.1.9.tar.gz", hash = "sha256:de810bf328c6a4550f4ffd6b0b34972aeb7ffcf40f3d285a0413734f9b63a929"}, +] + +[[package]] +name = "xyzservices" +version = "2023.10.1" +description = "Source of XYZ tiles providers" +optional = false +python-versions = ">=3.8" +files = [ + {file = "xyzservices-2023.10.1-py3-none-any.whl", hash = "sha256:6a4c38d3a9f89d3e77153eff9414b36a8ee0850c9e8b85796fd1b2a85b8dfd68"}, + {file = "xyzservices-2023.10.1.tar.gz", hash = "sha256:091229269043bc8258042edbedad4fcb44684b0473ede027b5672ad40dc9fa02"}, +] + +[[package]] +name = "zict" +version = "3.0.0" +description = "Mutable mapping tools" +optional = false +python-versions = ">=3.8" +files = [ + {file = "zict-3.0.0-py2.py3-none-any.whl", hash = "sha256:5796e36bd0e0cc8cf0fbc1ace6a68912611c1dbd74750a3f3026b9b9d6a327ae"}, + {file = "zict-3.0.0.tar.gz", hash = "sha256:e321e263b6a97aafc0790c3cfb3c04656b7066e6738c37fffcca95d803c9fba5"}, +] + +[[package]] +name = "zipp" +version = "3.17.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.8" +files = [ + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] + +[metadata] +lock-version = "2.0" +python-versions = ">=3.10, <3.11" +content-hash = "17af8b9b62d1c64977133b92b78c5d597460a95203c5ed5bb57aa1a8d6b79554" diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..6309cee --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,35 @@ +[tool.poetry] +name = "rime" +authors = ["Edward Byers ", + "Mia Werning "] + +author_email = "byers@iiasa.ac.at" +description = "Rapid Impact Model Emulator" +repository = "https://github.com/iiasa/rime" +homepage = "https://iiasa.ac.at/programs/ece" +documentation = "https://github.com/iiasa/rime" +version = "0.1.0" +license = "GNU CPL v3" +readme = "README.md" + +[tool.poetry.dependencies] +python = ">=3.10, <3.11" +alive-progress = "^3.1.5" +dask = "^2024.2.0" +numpy = "^1.23" +pandas = "^2.2.0" +pyam-iamc = "^1.7" +xarray = "^2024.1.1" +scipy = "^1.12.0" +holoviews = "^1.18.3" +matplotlib = "^3.8.3" +seaborn = "^0.13.2" +rich = "^13.7.0" +pyyaml = "^6.0.1" +hvplot = "^0.9.2" +distributed = "^2024.2.0" + + +[build-system] +requires = ["poetry-core"] +build-backend = "poetry.core.masonry.api" diff --git a/rime/pp_combined_example.ipynb b/rime/pp_combined_example.ipynb index f122d9c..82bd19a 100644 --- a/rime/pp_combined_example.ipynb +++ b/rime/pp_combined_example.ipynb @@ -23,13 +23,11 @@ " }\n", "\n", " var force = true;\n", + " var py_version = '3.3.4'.replace('rc', '-rc.').replace('.dev', '-dev.');\n", + " var reloading = false;\n", + " var Bokeh = root.Bokeh;\n", "\n", - " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", - " root._bokeh_onload_callbacks = [];\n", - " root._bokeh_is_loading = undefined;\n", - " }\n", - "\n", - " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", + " if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n", " root._bokeh_timeout = Date.now() + 5000;\n", " root._bokeh_failed_load = false;\n", " }\n", @@ -41,26 +39,30 @@ " callback();\n", " });\n", " } finally {\n", - " delete root._bokeh_onload_callbacks\n", + " delete root._bokeh_onload_callbacks;\n", " }\n", " console.debug(\"Bokeh: all callbacks have finished\");\n", " }\n", "\n", - " function load_libs(css_urls, js_urls, js_modules, callback) {\n", + " function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n", " if (css_urls == null) css_urls = [];\n", " if (js_urls == null) js_urls = [];\n", " if (js_modules == null) js_modules = [];\n", + " if (js_exports == null) js_exports = {};\n", "\n", " root._bokeh_onload_callbacks.push(callback);\n", + "\n", " if (root._bokeh_is_loading > 0) {\n", " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n", " return null;\n", " }\n", - " if (js_urls.length === 0 && js_modules.length === 0) {\n", + " if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n", " run_callbacks();\n", " return null;\n", " }\n", - " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " if (!reloading) {\n", + " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", + " }\n", "\n", " function on_load() {\n", " root._bokeh_is_loading--;\n", @@ -69,26 +71,37 @@ " run_callbacks()\n", " }\n", " }\n", + " window._bokeh_on_load = on_load\n", "\n", " function on_error() {\n", " console.error(\"failed to load \" + url);\n", " }\n", "\n", - " for (var i = 0; i < css_urls.length; i++) {\n", - " var url = css_urls[i];\n", - " const element = document.createElement(\"link\");\n", - " element.onload = on_load;\n", - " element.onerror = on_error;\n", - " element.rel = \"stylesheet\";\n", - " element.type = \"text/css\";\n", - " element.href = url;\n", - " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", - " document.body.appendChild(element);\n", - " }\n", - "\n", " var skip = [];\n", " if (window.requirejs) {\n", - " window.requirejs.config({'packages': {}, 'paths': {'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@4.2.5/dist/gridstack-h5', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'gridstack': {'exports': 'GridStack'}}});\n", + " window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n", + " require([\"jspanel\"], function(jsPanel) {\n", + "\twindow.jsPanel = jsPanel\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-modal\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-tooltip\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-hint\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-layout\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-contextmenu\"], function() {\n", + "\ton_load()\n", + " })\n", + " require([\"jspanel-dock\"], function() {\n", + "\ton_load()\n", + " })\n", " require([\"gridstack\"], function(GridStack) {\n", "\twindow.GridStack = GridStack\n", "\ton_load()\n", @@ -96,22 +109,59 @@ " require([\"notyf\"], function() {\n", "\ton_load()\n", " })\n", - " root._bokeh_is_loading = css_urls.length + 2;\n", + " root._bokeh_is_loading = css_urls.length + 9;\n", " } else {\n", - " root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length;\n", + " root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n", + " }\n", + "\n", + " var existing_stylesheets = []\n", + " var links = document.getElementsByTagName('link')\n", + " for (var i = 0; i < links.length; i++) {\n", + " var link = links[i]\n", + " if (link.href != null) {\n", + "\texisting_stylesheets.push(link.href)\n", + " }\n", + " }\n", + " for (var i = 0; i < css_urls.length; i++) {\n", + " var url = css_urls[i];\n", + " if (existing_stylesheets.indexOf(url) !== -1) {\n", + "\ton_load()\n", + "\tcontinue;\n", + " }\n", + " const element = document.createElement(\"link\");\n", + " element.onload = on_load;\n", + " element.onerror = on_error;\n", + " element.rel = \"stylesheet\";\n", + " element.type = \"text/css\";\n", + " element.href = url;\n", + " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n", + " document.body.appendChild(element);\n", + " } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n", + " var urls = ['https://cdn.holoviz.org/panel/1.3.8/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.3.8/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.3.8/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.3.8/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.3.8/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.3.8/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.3.8/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n", + " for (var i = 0; i < urls.length; i++) {\n", + " skip.push(urls[i])\n", + " }\n", " } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n", - " var urls = ['https://cdn.holoviz.org/panel/0.14.4/dist/bundled/gridstack/gridstack@4.2.5/dist/gridstack-h5.js'];\n", + " var urls = ['https://cdn.holoviz.org/panel/1.3.8/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n", " for (var i = 0; i < urls.length; i++) {\n", " skip.push(urls[i])\n", " }\n", " } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n", - " var urls = ['https://cdn.holoviz.org/panel/0.14.4/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n", + " var urls = ['https://cdn.holoviz.org/panel/1.3.8/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n", " for (var i = 0; i < urls.length; i++) {\n", " skip.push(urls[i])\n", " }\n", - " } for (var i = 0; i < js_urls.length; i++) {\n", + " } var existing_scripts = []\n", + " var scripts = document.getElementsByTagName('script')\n", + " for (var i = 0; i < scripts.length; i++) {\n", + " var script = scripts[i]\n", + " if (script.src != null) {\n", + "\texisting_scripts.push(script.src)\n", + " }\n", + " }\n", + " for (var i = 0; i < js_urls.length; i++) {\n", " var url = js_urls[i];\n", - " if (skip.indexOf(url) >= 0) {\n", + " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", "\tif (!window.requirejs) {\n", "\t on_load();\n", "\t}\n", @@ -127,7 +177,7 @@ " }\n", " for (var i = 0; i < js_modules.length; i++) {\n", " var url = js_modules[i];\n", - " if (skip.indexOf(url) >= 0) {\n", + " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n", "\tif (!window.requirejs) {\n", "\t on_load();\n", "\t}\n", @@ -142,6 +192,26 @@ " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", " document.head.appendChild(element);\n", " }\n", + " for (const name in js_exports) {\n", + " var url = js_exports[name];\n", + " if (skip.indexOf(url) >= 0 || root[name] != null) {\n", + "\tif (!window.requirejs) {\n", + "\t on_load();\n", + "\t}\n", + "\tcontinue;\n", + " }\n", + " var element = document.createElement('script');\n", + " element.onerror = on_error;\n", + " element.async = false;\n", + " element.type = \"module\";\n", + " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n", + " element.textContent = `\n", + " import ${name} from \"${url}\"\n", + " window.${name} = ${name}\n", + " window._bokeh_on_load()\n", + " `\n", + " document.head.appendChild(element);\n", + " }\n", " if (!js_urls.length && !js_modules.length) {\n", " on_load()\n", " }\n", @@ -153,12 +223,11 @@ " document.body.appendChild(element);\n", " }\n", "\n", - " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.3.min.js\", \"https://unpkg.com/@holoviz/panel@0.14.4/dist/panel.min.js\"];\n", + " var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.4.min.js\", \"https://cdn.holoviz.org/panel/1.3.8/dist/panel.min.js\"];\n", " var js_modules = [];\n", - " var css_urls = [\"https://cdn.holoviz.org/panel/0.14.4/dist/css/alerts.css\", \"https://cdn.holoviz.org/panel/0.14.4/dist/css/card.css\", \"https://cdn.holoviz.org/panel/0.14.4/dist/css/dataframe.css\", \"https://cdn.holoviz.org/panel/0.14.4/dist/css/debugger.css\", \"https://cdn.holoviz.org/panel/0.14.4/dist/css/json.css\", \"https://cdn.holoviz.org/panel/0.14.4/dist/css/loading.css\", \"https://cdn.holoviz.org/panel/0.14.4/dist/css/markdown.css\", \"https://cdn.holoviz.org/panel/0.14.4/dist/css/widgets.css\"];\n", + " var js_exports = {};\n", + " var css_urls = [];\n", " var inline_js = [ function(Bokeh) {\n", - " inject_raw_css(\"\\n .bk.pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n }\\n \");\n", - " }, function(Bokeh) {\n", " Bokeh.set_log_level(\"info\");\n", " },\n", "function(Bokeh) {} // ensure no trailing comma for IE\n", @@ -167,27 +236,67 @@ " function run_inline_js() {\n", " if ((root.Bokeh !== undefined) || (force === true)) {\n", " for (var i = 0; i < inline_js.length; i++) {\n", - " inline_js[i].call(root, root.Bokeh);\n", + "\ttry {\n", + " inline_js[i].call(root, root.Bokeh);\n", + "\t} catch(e) {\n", + "\t if (!reloading) {\n", + "\t throw e;\n", + "\t }\n", + "\t}\n", + " }\n", + " // Cache old bokeh versions\n", + " if (Bokeh != undefined && !reloading) {\n", + "\tvar NewBokeh = root.Bokeh;\n", + "\tif (Bokeh.versions === undefined) {\n", + "\t Bokeh.versions = new Map();\n", + "\t}\n", + "\tif (NewBokeh.version !== Bokeh.version) {\n", + "\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n", + "\t}\n", + "\troot.Bokeh = Bokeh;\n", " }} else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(run_inline_js, 100);\n", " } else if (!root._bokeh_failed_load) {\n", " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n", " root._bokeh_failed_load = true;\n", " }\n", + " root._bokeh_is_initializing = false\n", " }\n", "\n", - " if (root._bokeh_is_loading === 0) {\n", - " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", - " run_inline_js();\n", - " } else {\n", - " load_libs(css_urls, js_urls, js_modules, function() {\n", - " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", - " run_inline_js();\n", - " });\n", + " function load_or_wait() {\n", + " // Implement a backoff loop that tries to ensure we do not load multiple\n", + " // versions of Bokeh and its dependencies at the same time.\n", + " // In recent versions we use the root._bokeh_is_initializing flag\n", + " // to determine whether there is an ongoing attempt to initialize\n", + " // bokeh, however for backward compatibility we also try to ensure\n", + " // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n", + " // before older versions are fully initialized.\n", + " if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n", + " root._bokeh_is_initializing = false;\n", + " root._bokeh_onload_callbacks = undefined;\n", + " console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n", + " load_or_wait();\n", + " } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n", + " setTimeout(load_or_wait, 100);\n", + " } else {\n", + " root._bokeh_is_initializing = true\n", + " root._bokeh_onload_callbacks = []\n", + " var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n", + " if (!reloading && !bokeh_loaded) {\n", + "\troot.Bokeh = undefined;\n", + " }\n", + " load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n", + "\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", + "\trun_inline_js();\n", + " });\n", + " }\n", " }\n", + " // Give older versions of the autoload script a head-start to ensure\n", + " // they initialize before we start loading newer version.\n", + " setTimeout(load_or_wait, 100)\n", "}(window));" ], - "application/vnd.holoviews_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@4.2.5/dist/gridstack-h5', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'gridstack': {'exports': 'GridStack'}}});\n require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n })\n require([\"notyf\"], function() {\n\ton_load()\n })\n root._bokeh_is_loading = css_urls.length + 2;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length;\n } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/0.14.4/dist/bundled/gridstack/gridstack@4.2.5/dist/gridstack-h5.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/0.14.4/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) >= 0) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) >= 0) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.4.3.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-2.4.3.min.js\", \"https://unpkg.com/@holoviz/panel@0.14.4/dist/panel.min.js\"];\n var js_modules = [];\n var css_urls = [\"https://cdn.holoviz.org/panel/0.14.4/dist/css/alerts.css\", \"https://cdn.holoviz.org/panel/0.14.4/dist/css/card.css\", \"https://cdn.holoviz.org/panel/0.14.4/dist/css/dataframe.css\", \"https://cdn.holoviz.org/panel/0.14.4/dist/css/debugger.css\", \"https://cdn.holoviz.org/panel/0.14.4/dist/css/json.css\", \"https://cdn.holoviz.org/panel/0.14.4/dist/css/loading.css\", \"https://cdn.holoviz.org/panel/0.14.4/dist/css/markdown.css\", \"https://cdn.holoviz.org/panel/0.14.4/dist/css/widgets.css\"];\n var inline_js = [ function(Bokeh) {\n inject_raw_css(\"\\n .bk.pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n }\\n \");\n }, function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, js_modules, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" + "application/vnd.holoviews_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n var py_version = '3.3.4'.replace('rc', '-rc.').replace('.dev', '-dev.');\n var reloading = false;\n var Bokeh = root.Bokeh;\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n run_callbacks();\n return null;\n }\n if (!reloading) {\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n require([\"jspanel\"], function(jsPanel) {\n\twindow.jsPanel = jsPanel\n\ton_load()\n })\n require([\"jspanel-modal\"], function() {\n\ton_load()\n })\n require([\"jspanel-tooltip\"], function() {\n\ton_load()\n })\n require([\"jspanel-hint\"], function() {\n\ton_load()\n })\n require([\"jspanel-layout\"], function() {\n\ton_load()\n })\n require([\"jspanel-contextmenu\"], function() {\n\ton_load()\n })\n require([\"jspanel-dock\"], function() {\n\ton_load()\n })\n require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n })\n require([\"notyf\"], function() {\n\ton_load()\n })\n root._bokeh_is_loading = css_urls.length + 9;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n var existing_stylesheets = []\n var links = document.getElementsByTagName('link')\n for (var i = 0; i < links.length; i++) {\n var link = links[i]\n if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n }\n }\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.8/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.3.8/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.3.8/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.3.8/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.3.8/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.3.8/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.3.8/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.8/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.3.8/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } var existing_scripts = []\n var scripts = document.getElementsByTagName('script')\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n\texisting_scripts.push(script.src)\n }\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n var url = js_exports[name];\n if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.3.4.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.3.4.min.js\", \"https://cdn.holoviz.org/panel/1.3.8/dist/panel.min.js\"];\n var js_modules = [];\n var js_exports = {};\n var css_urls = [];\n var inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n\ttry {\n inline_js[i].call(root, root.Bokeh);\n\t} catch(e) {\n\t if (!reloading) {\n\t throw e;\n\t }\n\t}\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n if (!reloading && !bokeh_loaded) {\n\troot.Bokeh = undefined;\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));" }, "metadata": {}, "output_type": "display_data" @@ -443,10 +552,20 @@ { "data": { "text/html": [ - "" ] @@ -455,12 +574,82 @@ "output_type": "display_data" }, { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\byers\\Anaconda3\\envs\\py310\\lib\\site-packages\\pyproj\\__init__.py:89: UserWarning: pyproj unable to set database path.\n", - " _pyproj_global_context_initialize()\n" - ] + "data": { + "application/vnd.holoviews_exec.v0+json": "", + "text/html": [ + "
\n", + "
\n", + "
\n", + "" + ] + }, + "metadata": { + "application/vnd.holoviews_exec.v0+json": { + "id": "p1002" + } + }, + "output_type": "display_data" }, { "data": { @@ -482,8 +671,9 @@ "\n", "import dask\n", "import dask.dataframe as dd\n", - "from dask.diagnostics import ProgressBar\n", - "from dask.diagnostics import Profiler, ResourceProfiler, CacheProfiler\n", + "# from dask.diagnostics import ProgressBar\n", + "from dask.diagnostics import Profiler, ResourceProfiler, CacheProfiler, ProgressBar\n", + "from dask.distributed import Client\n", "\n", "# from dask.distributed import Client # uncomment this to open Dask client to see performance\n", "import glob\n", @@ -503,6 +693,7 @@ "metadata": {}, "outputs": [], "source": [ + "\n", "# Load a yaml file that will help select multiple climate indicator files (not necessarily needed)\n", "with open(\"indicator_params.yml\", \"r\") as f:\n", " params = yaml.full_load(f)" @@ -513,18 +704,7 @@ "execution_count": 3, "id": "0da81a1a", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "dask.config.set(scheduler=\"processes\")\n", "dask.config.set(num_workers=num_workers)\n", @@ -561,8 +741,22 @@ "name": "stderr", "output_type": "stream", "text": [ + "pyam - INFO: Running in a notebook, setting up a basic logging at level INFO\n", "pyam.core - INFO: Reading file emissions_temp_AR6_small.xlsx\n", - "pyam.core - INFO: Found column 'exclude' in sheet 'meta', moved to attribute `IamDataFrame.exclude`.\n" + "/home/byers/py311/lib/python3.10/site-packages/pyam/core.py:2692: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " index = pd.unique(index)\n", + "pyam.core - INFO: Reading meta indicators\n", + "/home/byers/py311/lib/python3.10/site-packages/pyam/core.py:2692: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " index = pd.unique(index)\n", + "/home/byers/rime/rime/utils.py:92: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\n", + "The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\n", + "\n", + "For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\n", + "\n", + "\n", + " dft[ssp_meta_col].replace(\n", + "/home/byers/py311/lib/python3.10/site-packages/pyam/core.py:2692: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " index = pd.unique(index)\n" ] } ], @@ -588,6 +782,25 @@ "id": "0f6cae87-9717-4304-b841-5d61e87b55d3", "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/byers/py311/lib/python3.10/site-packages/pyam/core.py:2692: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " index = pd.unique(index)\n", + "/home/byers/py311/lib/python3.10/site-packages/pyam/core.py:2692: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " index = pd.unique(index)\n", + "/home/byers/rime/rime/utils.py:92: FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.\n", + "The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.\n", + "\n", + "For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.\n", + "\n", + "\n", + " dft[ssp_meta_col].replace(\n", + "/home/byers/py311/lib/python3.10/site-packages/pyam/core.py:2692: FutureWarning: unique with argument that is not not a Series, Index, ExtensionArray, or np.ndarray is deprecated and will raise in a future version.\n", + " index = pd.unique(index)\n" + ] + }, { "data": { "text/plain": [ @@ -646,7 +859,17 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, + "id": "256391d3-798f-4c63-b5b8-0f3b2e1da325", + "metadata": {}, + "outputs": [], + "source": [ + "# Requires some configuration - need to download the data from https://zenodo.org/records/10212339, and set the file paths in the file process_config.py" + ] + }, + { + "cell_type": "code", + "execution_count": 7, "id": "f4c31c82", "metadata": {}, "outputs": [ @@ -654,33 +877,19 @@ "name": "stdout", "output_type": "stream", "text": [ - "Test multiple IAM scenarios, 1 indicator\n", - "Single indicator mode (multi-scenarios possible)\n", - "COFFEE_1_1_EN_NPi2020_400f_lowBECCS\n", - "GCAM_5_3_NGFS2_Current Policies\n", - "IMAGE_3_0_EN_INDCi2030_3000f\n", - "IMAGE_3_0_1_SSP1-26\n", - "IMAGE_3_0_1_SSP2-45\n", - "IMAGE_3_0_1_SSP3-Baseline\n", - "IMAGE_3_0_1_SSP5-Baseline\n", - "REMIND-MAgPIE_2_1-4_2_SusDev_SDP-PkBudg1000\n", - "WITCH_5_0_CO_Bridge\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\github\\rime\\rime\\utils.py:103: UserWarning: rename 'threshold' to 'gmt' does not create an index anymore. Try using swap_dims instead or use set_index after rename to create an indexed coordinate.\n", - " mapdata = mapdata.rename({'threshold':'gmt'})\n" + "Test multiple IAM scenarios, 1 indicator\n" ] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "FINISHED Test multiple scenarios, 1 indicator\n", - "19.469594478607178\n" + "ename": "OSError", + "evalue": "no files to open", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mOSError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[7], line 14\u001b[0m\n\u001b[1;32m 10\u001b[0m ssp \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mssp2\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 13\u001b[0m files \u001b[38;5;241m=\u001b[39m glob\u001b[38;5;241m.\u001b[39mglob(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mimpact_data_dir\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;130;01m\\\\\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00mind\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;130;01m\\\\\u001b[39;00m\u001b[38;5;124m*\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mshort\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mssp\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m*\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mftype\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.nc4\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m---> 14\u001b[0m mapdata \u001b[38;5;241m=\u001b[39m \u001b[43mxr\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen_mfdataset\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 15\u001b[0m \u001b[43m \u001b[49m\u001b[43mfiles\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpreprocess\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mremove_ssp_from_ds\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcombine\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mnested\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconcat_dim\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mgmt\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\n\u001b[1;32m 16\u001b[0m \u001b[43m)\u001b[49m\n\u001b[1;32m 18\u001b[0m mapdata \u001b[38;5;241m=\u001b[39m tidy_mapdata(mapdata)\n\u001b[1;32m 20\u001b[0m map_out_MS \u001b[38;5;241m=\u001b[39m map_transform_gmt_wrapper(\n\u001b[1;32m 21\u001b[0m ssps_imp,\n\u001b[1;32m 22\u001b[0m mapdata,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 29\u001b[0m interpolation\u001b[38;5;241m=\u001b[39minterpolation,\n\u001b[1;32m 30\u001b[0m )\n", + "File \u001b[0;32m~/py311/lib/python3.10/site-packages/xarray/backends/api.py:990\u001b[0m, in \u001b[0;36mopen_mfdataset\u001b[0;34m(paths, chunks, concat_dim, compat, preprocess, engine, data_vars, coords, combine, parallel, join, attrs_file, combine_attrs, **kwargs)\u001b[0m\n\u001b[1;32m 987\u001b[0m paths \u001b[38;5;241m=\u001b[39m _find_absolute_paths(paths, engine\u001b[38;5;241m=\u001b[39mengine, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 989\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m paths:\n\u001b[0;32m--> 990\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mno files to open\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 992\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m combine \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnested\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[1;32m 993\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(concat_dim, (\u001b[38;5;28mstr\u001b[39m, DataArray)) \u001b[38;5;129;01mor\u001b[39;00m concat_dim \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", + "\u001b[0;31mOSError\u001b[0m: no files to open" ] } ], @@ -727,3468 +936,208 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "d596a52f-3304-4cbb-b0cb-c86e83e39ecf", "metadata": {}, + "outputs": [], + "source": [ + "mapdata" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "794bd1c3", + "metadata": {}, + "outputs": [], + "source": [ + "map_out_MS" + ] + }, + { + "cell_type": "markdown", + "id": "f31bf98d", + "metadata": {}, + "source": [ + "## Example 2: 1 scenario, multiple indicators\n" + ] + }, + { + "cell_type": "markdown", + "id": "07f26175", + "metadata": {}, + "source": [ + "### Build combined dataset with multiple indicators" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "85bab5fb", + "metadata": {}, "outputs": [ { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:  (lon: 720, lat: 360, gmt: 6)\n",
-       "Coordinates:\n",
-       "  * lon      (lon) float64 -179.8 -179.2 -178.8 -178.2 ... 178.8 179.2 179.8\n",
-       "  * lat      (lat) float64 89.75 89.25 88.75 88.25 ... -88.75 -89.25 -89.75\n",
-       "  * gmt      (gmt) float64 1.2 1.5 2.0 2.5 3.0 3.5\n",
-       "Data variables:\n",
-       "    sdii     (gmt, lat, lon) float64 dask.array<chunksize=(1, 360, 720), meta=np.ndarray>
" - ], - "text/plain": [ - "\n", - "Dimensions: (lon: 720, lat: 360, gmt: 6)\n", - "Coordinates:\n", - " * lon (lon) float64 -179.8 -179.2 -178.8 -178.2 ... 178.8 179.2 179.8\n", - " * lat (lat) float64 89.75 89.25 88.75 88.25 ... -88.75 -89.25 -89.75\n", - " * gmt (gmt) float64 1.2 1.5 2.0 2.5 3.0 3.5\n", - "Data variables:\n", - " sdii (gmt, lat, lon) float64 dask.array" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "mapdata" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "794bd1c3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:  (lon: 720, lat: 360, year: 18)\n",
-       "Coordinates:\n",
-       "  * lon      (lon) float64 -179.8 -179.2 -178.8 -178.2 ... 178.8 179.2 179.8\n",
-       "  * lat      (lat) float64 89.75 89.25 88.75 88.25 ... -88.75 -89.25 -89.75\n",
-       "  * year     (year) int32 2015 2020 2025 2030 2035 ... 2080 2085 2090 2095 2100\n",
-       "Data variables:\n",
-       "    sdii     (lat, lon, year) float64 999.0 nan nan nan nan ... nan nan nan nan\n",
-       "Attributes:\n",
-       "    indicator:  sdii
" - ], - "text/plain": [ - "\n", - "Dimensions: (lon: 720, lat: 360, year: 18)\n", - "Coordinates:\n", - " * lon (lon) float64 -179.8 -179.2 -178.8 -178.2 ... 178.8 179.2 179.8\n", - " * lat (lat) float64 89.75 89.25 88.75 88.25 ... -88.75 -89.25 -89.75\n", - " * year (year) int32 2015 2020 2025 2030 2035 ... 2080 2085 2090 2095 2100\n", - "Data variables:\n", - " sdii (lat, lon, year) float64 999.0 nan nan nan nan ... nan nan nan nan\n", - "Attributes:\n", - " indicator: sdii" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "map_out_MS" - ] - }, - { - "cell_type": "markdown", - "id": "f31bf98d", - "metadata": {}, - "source": [ - "## Example 2: 1 scenario, multiple indicators\n" - ] - }, - { - "cell_type": "markdown", - "id": "07f26175", - "metadata": {}, - "source": [ - "### Build combined dataset with multiple indicators" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "85bab5fb", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test 1 scenario, multiple indicators\n", - "cdd\n", - "pr_r10\n", - "pr_r20\n", - "pr_r95p\n", - "pr_r99p\n", - "sdii\n", - "dri\n", - "sdd_c_18p3\n", - "sdd_c_24p0\n", - "seas\n", - "wsi\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\github\\rime\\rime\\utils.py:103: UserWarning: rename 'threshold' to 'gmt' does not create an index anymore. Try using swap_dims instead or use set_index after rename to create an indexed coordinate.\n", - " mapdata = mapdata.rename({'threshold':'gmt'})\n" - ] - } - ], - "source": [ - "# Doesn't work -0\n", - "# AttributeError: 'DataArray' object has no attribute 'rename_vars'\n", - "# lines 230-233 in map_transform_gmt\n", - "\n", - "gmt_name = \"gmt\"\n", - "print(\"Test 1 scenario, multiple indicators\")\n", - "start = time.time()\n", - "ssp = \"ssp2\"\n", - "mapdata = xr.Dataset()\n", - "indicators = [\n", - " \"cdd\",\n", - " \"precip\",\n", - " \"dri\",\n", - " # \"dri_qtot\",\n", - " # \"ia_var\",\n", - " # \"ia_var_qtot\",\n", - " \"sdd_18p3\",\n", - " \"sdd_24p0\",\n", - " \"seas\",\n", - " \"wsi\",\n", - "] #'heatwave']\n", - "\n", - "for ind in indicators:\n", - " for var in params[\"indicators\"][ind]:\n", - " short = params[\"indicators\"][ind][var][\"short_name\"]\n", - " print(short)\n", - " files = glob.glob(\n", - " os.path.join(impact_data_dir, ind, f\"*{short}_{ssp}*{ftype}.nc4\")\n", - " )\n", - " mapdata[short] = xr.open_mfdataset(\n", - " files, preprocess=remove_ssp_from_ds, combine=\"nested\", concat_dim=\"gmt\"\n", - " )[short]\n", - "\n", - "mapdata = tidy_mapdata(mapdata)" - ] - }, - { - "cell_type": "markdown", - "id": "cc24e437", - "metadata": {}, - "source": [ - "### Run transformation (12 impact indicators) (faster with dask=False)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "bd26a126", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Single scenario mode, multiple indicators possible\n", - "Warning! Min temperature below 1.2°C 1.12, data before not possible\n", - "FINISHED 1 scenario, multiple indicators\n", - "198.64874148368835\n" - ] - } - ], - "source": [ - "map_out_MI = map_transform_gmt_wrapper(\n", - " ssps_imp.filter(IMP_marker=\"CurPol\"),\n", - " mapdata,\n", - " years,\n", - " use_dask=False,\n", - " gmt_name=\"gmt\",\n", - ")\n", - "\n", - "comp = dict(zlib=True, complevel=5)\n", - "encoding = {var: comp for var in map_out_MI.data_vars}\n", - "filename = f\"{output_folder_maps}scenario_maps_multiindicator_{ftype}_test_notebook.nc\"\n", - "# map_out_MI.to_netcdf(filename, encoding=encoding)\n", - "\n", - "print(\"FINISHED 1 scenario, multiple indicators\")\n", - "print(f\"{time.time()-start}\")" - ] - }, - { - "cell_type": "markdown", - "id": "8c7c007c", - "metadata": {}, - "source": [ - "### Data is now transformed to 5 year interval starting 2015" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "169f89a5", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:     (lon: 720, lat: 360, year: 18)\n",
-       "Coordinates:\n",
-       "  * lon         (lon) float64 -179.8 -179.2 -178.8 -178.2 ... 178.8 179.2 179.8\n",
-       "  * lat         (lat) float64 89.75 89.25 88.75 88.25 ... -88.75 -89.25 -89.75\n",
-       "  * year        (year) int32 2015 2020 2025 2030 2035 ... 2085 2090 2095 2100\n",
-       "Data variables:\n",
-       "    cdd         (lat, lon, year) float64 dask.array<chunksize=(360, 720, 1), meta=np.ndarray>\n",
-       "    pr_r10      (lat, lon, year) float64 dask.array<chunksize=(360, 720, 1), meta=np.ndarray>\n",
-       "    pr_r20      (lat, lon, year) float64 dask.array<chunksize=(360, 720, 1), meta=np.ndarray>\n",
-       "    pr_r95p     (lat, lon, year) float64 dask.array<chunksize=(360, 720, 1), meta=np.ndarray>\n",
-       "    pr_r99p     (lat, lon, year) float64 dask.array<chunksize=(360, 720, 1), meta=np.ndarray>\n",
-       "    sdii        (lat, lon, year) float64 dask.array<chunksize=(360, 720, 1), meta=np.ndarray>\n",
-       "    dri         (lat, lon, year) float64 dask.array<chunksize=(360, 720, 1), meta=np.ndarray>\n",
-       "    sdd_c_18p3  (lat, lon, year) float64 dask.array<chunksize=(360, 720, 1), meta=np.ndarray>\n",
-       "    sdd_c_24p0  (lat, lon, year) float64 dask.array<chunksize=(360, 720, 1), meta=np.ndarray>\n",
-       "    seas        (lat, lon, year) float64 dask.array<chunksize=(360, 720, 1), meta=np.ndarray>\n",
-       "    wsi         (lat, lon, year) float64 dask.array<chunksize=(360, 720, 1), meta=np.ndarray>\n",
-       "Attributes:\n",
-       "    model:     GCAM 5.3\n",
-       "    scenario:  NGFS2_Current Policies
" - ], - "text/plain": [ - "\n", - "Dimensions: (lon: 720, lat: 360, year: 18)\n", - "Coordinates:\n", - " * lon (lon) float64 -179.8 -179.2 -178.8 -178.2 ... 178.8 179.2 179.8\n", - " * lat (lat) float64 89.75 89.25 88.75 88.25 ... -88.75 -89.25 -89.75\n", - " * year (year) int32 2015 2020 2025 2030 2035 ... 2085 2090 2095 2100\n", - "Data variables:\n", - " cdd (lat, lon, year) float64 dask.array\n", - " pr_r10 (lat, lon, year) float64 dask.array\n", - " pr_r20 (lat, lon, year) float64 dask.array\n", - " pr_r95p (lat, lon, year) float64 dask.array\n", - " pr_r99p (lat, lon, year) float64 dask.array\n", - " sdii (lat, lon, year) float64 dask.array\n", - " dri (lat, lon, year) float64 dask.array\n", - " sdd_c_18p3 (lat, lon, year) float64 dask.array\n", - " sdd_c_24p0 (lat, lon, year) float64 dask.array\n", - " seas (lat, lon, year) float64 dask.array\n", - " wsi (lat, lon, year) float64 dask.array\n", - "Attributes:\n", - " model: GCAM 5.3\n", - " scenario: NGFS2_Current Policies" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "map_out_MI" - ] - }, - { - "cell_type": "markdown", - "id": "b4ff7baa", - "metadata": {}, - "source": [ - "## Plot dashboard (takes some minutes)" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "b407883b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Warning: year not in original data, interpolating now\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\byers\\Anaconda3\\envs\\py310\\lib\\site-packages\\geoviews\\operation\\__init__.py:14: HoloviewsDeprecationWarning: 'ResamplingOperation' is deprecated and will be removed in version 1.18, use 'ResampleOperation2D' instead.\n", - " from holoviews.operation.datashader import (\n" - ] - } - ], - "source": [ - "filename = \"test_map_notebook.html\"\n", - "plot_maps_dashboard(\n", - " map_out_MI,\n", - " filename=filename,\n", - " year=2063,\n", - " cmap=\"magma_r\",\n", - " shared_axes=True,\n", - " clim=None,\n", - ")\n", - "os.startfile(filename)" - ] - }, - { - "cell_type": "markdown", - "id": "53155084", - "metadata": {}, - "source": [ - "## Process corresponding table data, aggregated by country" - ] - }, - { - "cell_type": "markdown", - "id": "534c8807", - "metadata": {}, - "source": [ - "### Import the climate impacts database files\n", - "Here is an example for sdii - standard precipitation index, and multiple variables, e.g. \n", - "Exposure of land area \n", - "Exposure of population \n", - "Hazard value \n", - "... \n" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "a9ee85cf", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
<xarray.Dataset>\n",
-       "Dimensions:                                    (gmt: 251, year: 18, ssp: 3,\n",
-       "                                                region: 226)\n",
-       "Coordinates:\n",
-       "  * gmt                                        (gmt) float64 1.2 1.206 ... 3.5\n",
-       "  * year                                       (year) int64 2015 2020 ... 2100\n",
-       "  * ssp                                        (ssp) object 'SSP1' 'SSP2' 'SSP3'\n",
-       "  * region                                     (region) object 'AFG' ... 'world'\n",
-       "Data variables:\n",
-       "    cdd|Exposure|Land area                     (gmt, year, ssp, region) float64 dask.array<chunksize=(251, 18, 3, 226), meta=np.ndarray>\n",
-       "    cdd|Exposure|Population                    (gmt, year, ssp, region) float64 dask.array<chunksize=(251, 18, 3, 226), meta=np.ndarray>\n",
-       "    cdd|Exposure|Population|%                  (gmt, year, ssp, region) float64 dask.array<chunksize=(251, 18, 3, 226), meta=np.ndarray>\n",
-       "    cdd|Hazard|Absolute|Land area weighted     (gmt, year, ssp, region) float64 dask.array<chunksize=(251, 18, 3, 226), meta=np.ndarray>\n",
-       "    cdd|Hazard|Absolute|Population weighted    (gmt, year, ssp, region) float64 dask.array<chunksize=(251, 18, 3, 226), meta=np.ndarray>\n",
-       "    cdd|Hazard|Risk score|Population weighted  (gmt, year, ssp, region) float64 dask.array<chunksize=(251, 18, 3, 226), meta=np.ndarray>
" - ], - "text/plain": [ - "\n", - "Dimensions: (gmt: 251, year: 18, ssp: 3,\n", - " region: 226)\n", - "Coordinates:\n", - " * gmt (gmt) float64 1.2 1.206 ... 3.5\n", - " * year (year) int64 2015 2020 ... 2100\n", - " * ssp (ssp) object 'SSP1' 'SSP2' 'SSP3'\n", - " * region (region) object 'AFG' ... 'world'\n", - "Data variables:\n", - " cdd|Exposure|Land area (gmt, year, ssp, region) float64 dask.array\n", - " cdd|Exposure|Population (gmt, year, ssp, region) float64 dask.array\n", - " cdd|Exposure|Population|% (gmt, year, ssp, region) float64 dask.array\n", - " cdd|Hazard|Absolute|Land area weighted (gmt, year, ssp, region) float64 dask.array\n", - " cdd|Hazard|Absolute|Population weighted (gmt, year, ssp, region) float64 dask.array\n", - " cdd|Hazard|Risk score|Population weighted (gmt, year, ssp, region) float64 dask.array" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "Test 1 scenario, multiple indicators\n", + "cdd\n" + ] + }, + { + "ename": "OSError", + "evalue": "no files to open", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mOSError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[8], line 30\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28mprint\u001b[39m(short)\n\u001b[1;32m 27\u001b[0m files \u001b[38;5;241m=\u001b[39m glob\u001b[38;5;241m.\u001b[39mglob(\n\u001b[1;32m 28\u001b[0m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(impact_data_dir, ind, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m*\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mshort\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mssp\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m*\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mftype\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.nc4\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 29\u001b[0m )\n\u001b[0;32m---> 30\u001b[0m mapdata[short] \u001b[38;5;241m=\u001b[39m \u001b[43mxr\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mopen_mfdataset\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 31\u001b[0m \u001b[43m \u001b[49m\u001b[43mfiles\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpreprocess\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mremove_ssp_from_ds\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcombine\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mnested\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconcat_dim\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mgmt\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\n\u001b[1;32m 32\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m[short]\n\u001b[1;32m 34\u001b[0m mapdata \u001b[38;5;241m=\u001b[39m tidy_mapdata(mapdata)\n", + "File \u001b[0;32m~/py311/lib/python3.10/site-packages/xarray/backends/api.py:990\u001b[0m, in \u001b[0;36mopen_mfdataset\u001b[0;34m(paths, chunks, concat_dim, compat, preprocess, engine, data_vars, coords, combine, parallel, join, attrs_file, combine_attrs, **kwargs)\u001b[0m\n\u001b[1;32m 987\u001b[0m paths \u001b[38;5;241m=\u001b[39m _find_absolute_paths(paths, engine\u001b[38;5;241m=\u001b[39mengine, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[1;32m 989\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m paths:\n\u001b[0;32m--> 990\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mOSError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mno files to open\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 992\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m combine \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnested\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[1;32m 993\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(concat_dim, (\u001b[38;5;28mstr\u001b[39m, DataArray)) \u001b[38;5;129;01mor\u001b[39;00m concat_dim \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", + "\u001b[0;31mOSError\u001b[0m: no files to open" + ] } ], + "source": [ + "# Doesn't work -0\n", + "# AttributeError: 'DataArray' object has no attribute 'rename_vars'\n", + "# lines 230-233 in map_transform_gmt\n", + "\n", + "gmt_name = \"gmt\"\n", + "print(\"Test 1 scenario, multiple indicators\")\n", + "start = time.time()\n", + "ssp = \"ssp2\"\n", + "mapdata = xr.Dataset()\n", + "indicators = [\n", + " \"cdd\",\n", + " \"precip\",\n", + " \"dri\",\n", + " # \"dri_qtot\",\n", + " # \"ia_var\",\n", + " # \"ia_var_qtot\",\n", + " \"sdd_18p3\",\n", + " \"sdd_24p0\",\n", + " \"seas\",\n", + " \"wsi\",\n", + "] #'heatwave']\n", + "\n", + "for ind in indicators:\n", + " for var in params[\"indicators\"][ind]:\n", + " short = params[\"indicators\"][ind][var][\"short_name\"]\n", + " print(short)\n", + " files = glob.glob(\n", + " os.path.join(impact_data_dir, ind, f\"*{short}_{ssp}*{ftype}.nc4\")\n", + " )\n", + " mapdata[short] = xr.open_mfdataset(\n", + " files, preprocess=remove_ssp_from_ds, combine=\"nested\", concat_dim=\"gmt\"\n", + " )[short]\n", + "\n", + "mapdata = tidy_mapdata(mapdata)" + ] + }, + { + "cell_type": "markdown", + "id": "cc24e437", + "metadata": {}, + "source": [ + "### Run transformation (12 impact indicators) (faster with dask=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bd26a126", + "metadata": {}, + "outputs": [], + "source": [ + "map_out_MI = map_transform_gmt_wrapper(\n", + " ssps_imp.filter(IMP_marker=\"CurPol\"),\n", + " mapdata,\n", + " years,\n", + " use_dask=False,\n", + " gmt_name=\"gmt\",\n", + ")\n", + "\n", + "comp = dict(zlib=True, complevel=5)\n", + "encoding = {var: comp for var in map_out_MI.data_vars}\n", + "filename = f\"{output_folder_maps}scenario_maps_multiindicator_{ftype}_test_notebook.nc\"\n", + "# map_out_MI.to_netcdf(filename, encoding=encoding)\n", + "\n", + "print(\"FINISHED 1 scenario, multiple indicators\")\n", + "print(f\"{time.time()-start}\")" + ] + }, + { + "cell_type": "markdown", + "id": "8c7c007c", + "metadata": {}, + "source": [ + "### Data is now transformed to 5 year interval starting 2015" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "169f89a5", + "metadata": {}, + "outputs": [], + "source": [ + "map_out_MI" + ] + }, + { + "cell_type": "markdown", + "id": "b4ff7baa", + "metadata": {}, + "source": [ + "## Plot dashboard (takes some minutes)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b407883b", + "metadata": {}, + "outputs": [], + "source": [ + "filename = \"test_map_notebook.html\"\n", + "plot_maps_dashboard(\n", + " map_out_MI,\n", + " filename=filename,\n", + " year=2063,\n", + " cmap=\"magma_r\",\n", + " shared_axes=True,\n", + " clim=None,\n", + ")\n", + "os.startfile(filename)" + ] + }, + { + "cell_type": "markdown", + "id": "53155084", + "metadata": {}, + "source": [ + "## Process corresponding table data, aggregated by country" + ] + }, + { + "cell_type": "markdown", + "id": "534c8807", + "metadata": {}, + "source": [ + "### Import the climate impacts database files\n", + "Here is an example for sdii - standard precipitation index, and multiple variables, e.g. \n", + "Exposure of land area \n", + "Exposure of population \n", + "Hazard value \n", + "... \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a9ee85cf", + "metadata": {}, + "outputs": [], "source": [ "filesall = glob.glob(fname_input_climate)\n", "files = filesall # [:6]\n", @@ -4201,18 +1150,10 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": null, "id": "d1e3f825", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "# of variables = 6\n" - ] - } - ], + "outputs": [], "source": [ "varis = list(ds.data_vars.keys())[:lvaris]\n", "dsi = ds[varis]\n", @@ -4232,7 +1173,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": null, "id": "e3551368", "metadata": {}, "outputs": [], @@ -4260,7 +1201,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": null, "id": "7f799e2a", "metadata": {}, "outputs": [], @@ -4279,7 +1220,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "id": "ebe93e79-94ce-4127-9ef6-5aa1f789766f", "metadata": {}, "outputs": [], @@ -4303,37 +1244,10 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": null, "id": "d4d94aa4", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[ ] | 0% Completed | 115.69 ms" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "C:\\Users\\byers\\AppData\\Roaming\\Python\\Python310\\site-packages\\dask\\dataframe\\utils.py:312: FutureWarning: The default dtype for empty Series will be 'object' instead of 'float64' in a future version. Specify a dtype explicitly to silence this warning.\n", - " return pd.Series([], dtype=dtype, name=name, index=index)\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[########################################] | 100% Completed | 19.15 s\n", - " Done: 19.877137184143066\n", - " Saved: COUNTRIES yrs=10\n", - " 19.877137184143066\n", - "6 variables, 9 scenarios\n" - ] - } - ], + "outputs": [], "source": [ "start = time.time()\n", "year_res = 10\n", @@ -4380,7 +1294,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": null, "id": "d1cc8871", "metadata": {}, "outputs": [], @@ -4390,57 +1304,20 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": null, "id": "4d08042a", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['RIME|cdd|Exposure|Land area',\n", - " 'RIME|cdd|Exposure|Population',\n", - " 'RIME|cdd|Exposure|Population|%',\n", - " 'RIME|cdd|Hazard|Absolute|Land area weighted',\n", - " 'RIME|cdd|Hazard|Absolute|Population weighted',\n", - " 'RIME|cdd|Hazard|Risk score|Population weighted']" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "expandeddGMT.variable" ] }, { "cell_type": "code", - "execution_count": 30, + "execution_count": null, "id": "0457fa1e-09db-4557-83e5-7f4e13064d84", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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pXqRLhEREdH7jsESERERkRoMloiIiIjUYLBEREREpAaDJSIiIiI1GCwRERERqcFgiYiIiEgNBktEREREajBYIiIiIlKDwRIRERGRGgyWiIiIiNRgsERERESkBoMlIiIiIjUYLBERERGpwWCJiIiISA0GS0RERERqMFgiIiIiUoPBEhEREZEaDJaIiIiI1GCwRERERKQGgyUiIiIiNRgsEREREanBYImIiIhIDQZLRERERGowWCIiIiJSg8ESERERkRoMloiIiIjUYLBEREREpAaDJSIiIiI1GCwRERERqcFgiYiIiEgNBktEREREajBYIiIiIlKDwRIRERGRGgyWiIiIiNRgsERERESkBoMlIiIiIjUYLBERERGpwWCJiIiISA0GS0RERERqMFgiIiIiUoPBEhEREZEaDJaIiIiI1GCwRERERKQGgyUiIiIiNRgsEREREanBYImIiIhIDQZLRERERGowWCIiIiJSg8ESERERkRoMloiIiIjUYLBEREREpAaDJSIiIiI1GCwRERERqfHOBEvPnj1Djx49YGZmBgsLC4SEhODly5dqt0lPT8egQYNgZWUFExMTdO3aFQkJCdL6S5cuISgoCA4ODjA0NETNmjWxYMGC110UIiIieoe8M8FSjx49cPXqVRw8eBC7du3CiRMnMGDAALXbjBgxAr///js2b96M48eP4+HDh/jkk0+k9efPn0elSpWwZs0aXL16FRMnTsT48eOxaNGi110cIiIiekcohBCivDNRlOjoaHh4eODs2bPw9vYGAOzbtw8dOnTAgwcPYGtrq7RNYmIirK2tsW7dOnz66acAgOvXr6NmzZqIjIxE48aNVR5r0KBBiI6OxpEjRzTOX1JSEszNzZGYmAgzM7MSlJCIiIjeNE3v3+9EzVJkZCQsLCykQAkAWrduDS0tLZw+fVrlNufPn0dWVhZat24tLXN3d4ejoyMiIyMLPVZiYiIsLS3V5icjIwNJSUmyiYiIiN5P70SwFB8fj0qVKsmW6ejowNLSEvHx8YVuo6enBwsLC9nyypUrF7rNqVOnsHHjxiIf782cORPm5ubS5ODgoHlhiIiI6J1SrsHSuHHjoFAo1E7Xr19/I3m5cuUKOnXqhNDQULRt21Zt2vHjxyMxMVGa/vnnnzeSRyIiInrzdMrz4KNGjUJwcLDaNFWrVoWNjQ0ePXokW56dnY1nz57BxsZG5XY2NjbIzMzEixcvZLVLCQkJSttcu3YNrVq1woABAzBp0qQi862vrw99ff0i0xEREdG7r1yDJWtra1hbWxeZztfXFy9evMD58+fRoEEDAMCRI0eQm5sLHx8flds0aNAAurq6OHz4MLp27QoAiImJwf379+Hr6yulu3r1Klq2bIk+ffogLCysDEpFRERE75N3ojccALRv3x4JCQlYunQpsrKy0LdvX3h7e2PdunUAgH///RetWrXC6tWr0ahRIwDA//73P+zZswcREREwMzPDkCFDALxqmwS8evTWsmVL+Pv74/vvv5eOpa2trVEQl4e94YiIiN49mt6/y7VmqTjWrl2LwYMHo1WrVtDS0kLXrl3x448/SuuzsrIQExOD1NRUadm8efOktBkZGfD398fixYul9b/99hseP36MNWvWYM2aNdJyJycn3L17942Ui4iIiN5u70zN0tuMNUtERETvnvdqnCUiIiKi8sJgiYiIiEgNBktEREREajBYIiIiIlKDwRIRERGRGgyWiIiIiNRgsERERESkBoMlIiIiIjUYLBERERGpwWCJiIiISA0GS0RERERqMFgiIiIiUoPBEhEREZEaDJaIiIiI1GCwRERERKQGgyUiIiIiNRgsEREREanBYImIiIhIDQZLRERERGowWCIiIiJSg8ESERERkRoMloiIiIjUYLBEREREpAaDJSIiIiI1GCwRERERqcFgiYiIiEgNBktEREREajBYIiIiIlKDwRIRERGRGgyWiIiIiNRgsERERESkBoMlIiIiIjUYLBERERGpwWCJiIiISA0GS0RERERqMFgiIiIiUoPBEhEREZEaDJaIiIiI1GCwRERERKQGgyUiIiIiNRgsEREREanBYImIiIhIDQZLRERERGowWCIiIiJSg8ESERERkRoMloiIiIjUYLBEREREpAaDJSIiIiI1GCwRERERqcFgiYiIiEgNBktEREREajBYIiIiIlKDwRIRERGRGgyWiIiIiNRgsERERESkBoMlIiIiIjXemWDp2bNn6NGjB8zMzGBhYYGQkBC8fPlS7Tbp6ekYNGgQrKysYGJigq5duyIhIUFl2qdPn8Le3h4KhQIvXrx4DSUgIiKid9E7Eyz16NEDV69excGDB7Fr1y6cOHECAwYMULvNiBEj8Pvvv2Pz5s04fvw4Hj58iE8++URl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\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# model = \"IMAG*\"\n", "scenario = [\n", @@ -4462,57 +1339,20 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": null, "id": "614d21e6-345c-43d5-9e9c-06606ce3a3d2", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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T0zqZAzDYOfOncTFxaFpWrSrc0Bqa2vJyclhx44dxMfHR7s64idIOx0epJ0OD9JOh4eD2U5KKerq6sjKykLXf36Uj/QAtUDXdbKzs6NdjTYRHx8vXwSHAWmnw4O00+FB2unwcLDa6Zd6fnaTQdBCCCGE6HQkAAkhhBCi05EA1EE5HA7uuusuHA5HtKsifoa00+FB2unwIO10eGgv7SSDoIUQQgjR6UgPkBBCCCE6HQlAQgghhOh0JAAJIYQQotORACSEEEKITkcCUDs2c+ZMRo0aRVxcHOnp6UydOpUNGzY0K+Pz+bj66qtJSUkhNjaWM888k5KSksj6FStWMG3aNHJycnC5XPTv35/HHntsn8/66quvGD58OA6Hg169evHKK68c7MPrMNqinZqqqKggOzsbTdOorq5utk7a6cC1ZTu98sorHHHEETidTtLT07n66qubrV+5ciXHHHMMTqeTnJwcHnjggYN6bB1JW7XT4sWLmTBhAomJiSQlJTFp0iRWrFjRrIy004Hbn3Z6/vnnOe6444iPj2/x+wygsrKS888/n/j4eBITE7nsssuor69vVuagtZMS7dakSZPUyy+/rFavXq2WL1+uJk+erLp166bq6+sjZa688kqVk5Oj5syZo5YsWaKOOuooNXbs2Mj6l156SV133XXqq6++Ups3b1avvvqqcrlc6oknnoiU2bJli3K73Wr69Olq7dq16oknnlAWi0XNmjXrkB7v4aot2qmp0047TZ188skKUFVVVZHl0k6t01bt9NBDD6msrCz1+uuvq02bNqkVK1aojz76KLK+pqZGZWRkqPPPP1+tXr1avfnmm8rlcqnnnnvukB3r4awt2qmurk4lJyeriy++WK1fv16tXr1anXnmmSojI0MFAgGllLRTa+1POz3yyCNq5syZaubMmft8n+120kknqSFDhqgffvhBffvtt6pXr15q2rRpkfUHs50kAB1GSktLFaC+/vprpZRS1dXVymazqXfeeSdSZt26dQpQCxYs+Mn9/OlPf1LHH3985P0tt9yiBg4c2KzMOeecoyZNmtTGR9A5tKadnn76aTV+/Hg1Z86cfb4wpJ3a1oG0U2VlpXK5XOrLL7/8yf0+/fTTKikpSfn9/siyW2+9VfXt2/cgHUnHdiDttHjxYgWogoKCSJmVK1cqQG3cuFEpJe3U1vZup6bmzZvXYgBau3atAtTixYsjyz777DOlaZoqKipSSh3cdpJTYIeRmpoaAJKTkwHIz88nGAwyceLESJl+/frRrVs3FixY8LP72b0PgAULFjTbB8CkSZN+dh/ipx1oO61du5a//e1v/O///m+LD/GTdmpbB9JOX3zxBYZhUFRURP/+/cnOzubss89mx44dkW0WLFjAsccei91ujyybNGkSGzZsoKqq6lAcWodyIO3Ut29fUlJSeOmllwgEAni9Xl566SX69+9Pbm4uIO3U1vZup/2xYMECEhMTGTlyZGTZxIkT0XWdhQsXRsocrHaSAHSYMAyDG264gXHjxjFo0CAAiouLsdvtJCYmNiubkZFBcXFxi/v5/vvvefvtt7niiisiy4qLi8nIyNhnH7W1tXi93rY9kA7uQNvJ7/czbdo0HnzwQbp169bivqWd2s6BttOWLVswDIN//OMfPProo7z77rtUVlZywgknEAgEIvtpqZ12rxP770DbKS4ujq+++orXXnsNl8tFbGwss2bN4rPPPsNqtUb2I+3UNlpqp/1RXFxMenp6s2VWq5Xk5ORIGxzMdpKnwR8mrr76alavXs133313wPtYvXo1p512GnfddRcnnnhiG9ZO7Hag7XTbbbfRv39/LrjggoNUM9HUgbaTYRgEg0Eef/zxyN/Qm2++SWZmJvPmzWPSpEkHo7qd1oG2k9fr5bLLLmPcuHG8+eabhMNh/vnPfzJlyhQWL16My+U6SDXunNri9ykapAfoMHDNNdfwySefMG/ePLKzsyPLMzMzCQQC+4ysLykpITMzs9mytWvXMmHCBK644gpmzJjRbF1mZuY+V1CUlJQQHx8vXxS/Qmvaae7cubzzzjtYrVasVisTJkwAIDU1lbvuuiuyH2mn1mtNO3Xp0gWAAQMGRNanpaWRmppKQUFBZD8ttdPudWL/tKad3njjDbZt28bLL7/MqFGjOOqoo3jjjTfYunUrH330UWQ/0k6t91PttD8yMzMpLS1ttiwUClFZWRlpg4PZThKA2jGlFNdccw0ffPABc+fOJS8vr9n6ESNGYLPZmDNnTmTZhg0bKCgoYMyYMZFla9as4fjjj+f3v/8999577z6fM2bMmGb7AHOsQ9N9iJ/WFu303nvvsWLFCpYvX87y5ct58cUXAfj2228jl1hLO7VOW7TTuHHjIst3q6yspLy8nO7duwNmO33zzTcEg8FImS+++IK+ffuSlJR00I6vo2iLdvJ4POi6jqZpkTK73xuGAUg7tdYvtdP+GDNmDNXV1eTn50eWzZ07F8MwGD16dKTMQWunVg+jFgfNVVddpRISEtRXX32ldu3aFXl5PJ5ImSuvvFJ169ZNzZ07Vy1ZskSNGTNGjRkzJrJ+1apVKi0tTV1wwQXN9lFaWhops/vy6ptvvlmtW7dOPfXUU3J59a/QFu20t5aumpB2ap22aqfTTjtNDRw4UM2fP1+tWrVKnXLKKWrAgAGRy6urq6tVRkaGuvDCC9Xq1avVW2+9pdxut1xevZ/aop3WrVunHA6Huuqqq9TatWvV6tWr1QUXXKASEhLUzp07lVLSTq21P+20a9cutWzZMvXCCy8oQH3zzTdq2bJlqqKiIlLmpJNOUsOGDVMLFy5U3333nerdu3ezy+APZjtJAGrHgBZfL7/8cqSM1+tVf/rTn1RSUpJyu93q9NNPV7t27Yqsv+uuu1rcR/fu3Zt91rx589TQoUOV3W5XPXr0aPYZ4ue1RTvt7acuG5V2OnBt1U41NTXq0ksvVYmJiSo5OVmdfvrpzS63VkqpFStWqKOPPlo5HA7VtWtXdd999x2KQ+wQ2qqdPv/8czVu3DiVkJCgkpKS1G9+85t9bjsh7XTg9qedfur3p2mZiooKNW3aNBUbG6vi4+PVJZdcourq6pp91sFqJ63xQIQQQgghOg0ZAySEEEKITkcCkBBCCCE6HQlAQgghhOh0JAAJIYQQotORACSEEEKITkcCkBBCCCE6HQlAQgghhOh0JAAJIYQQotORACSEOCwppZg4cWKLT2B/+umnSUxMpLCwMAo1E0IcDiQACSEOS5qm8fLLL7Nw4UKee+65yPKtW7dyyy238MQTT/zqp1P/kqYPZBRCHN4kAAkhDls5OTk89thj3HTTTWzduhWlFJdddhknnngiw4YN4+STTyY2NpaMjAwuvPBCysvLI9vOmjWLo48+msTERFJSUjjllFPYvHlzZP22bdvQNI23336b8ePH43Q6ef3116NxmEKIg0CeBSaEOOxNnTqVmpoazjjjDO655x7WrFnDwIED+cMf/sBFF12E1+vl1ltvJRQKMXfuXADee+89NE3jiCOOoL6+njvvvJNt27axfPlydF1n27Zt5OXlkZuby0MPPcSwYcNwOp106dIlykcrhGgLEoCEEIe90tJSBg4cSGVlJe+99x6rV6/m22+/Zfbs2ZEyhYWF5OTksGHDBvr06bPPPsrLy0lLS2PVqlUMGjQoEoAeffRRrr/++kN5OEKIQ0BOgQkhDnvp6en88Y9/pH///kydOpUVK1Ywb948YmNjI69+/foBRE5zbdy4kWnTptGjRw/i4+PJzc0FoKCgoNm+R44ceUiPRQhxaFijXQEhhGgLVqsVq9X8Squvr+fUU0/l/vvv36fc7lNYp556Kt27d+eFF14gKysLwzAYNGgQgUCgWfmYmJiDX3khxCEnAUgI0eEMHz6c9957j9zc3EgoaqqiooINGzbwwgsvcMwxxwDw3XffHepqCiGiSE6BCSE6nKuvvprKykqmTZvG4sWL2bx5M7Nnz+aSSy4hHA6TlJRESkoKzz//PJs2bWLu3LlMnz492tUWQhxCEoCEEB1OVlYW8+fPJxwOc+KJJzJ48GBuuOEGEhMT0XUdXdd56623yM/PZ9CgQdx44408+OCD0a62EOIQkqvAhBBCCNHpSA+QEEIIITodCUBCCCGE6HQkAAkhhBCi05EAJIQQQohORwKQEEIIITodCUBCCCGE6HQkAAkhhBCi05EAJIQQQohORwKQEEIIITodCUBCCCGE6HQkAAkhhBCi05EAJIQQQohO5/8B18JFp906D4EAAAAASUVORK5CYII=\n", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "expandeddGMT.filter(variable=variable, scenario=scenario, region=\"PAK\").plot()" ] }, { "cell_type": "code", - "execution_count": 32, + "execution_count": null, "id": "def35b50-a552-4a79-b481-08bceeca1918", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['RIME|cdd|Exposure|Land area',\n", - " 'RIME|cdd|Exposure|Population',\n", - " 'RIME|cdd|Exposure|Population|%',\n", - " 'RIME|cdd|Hazard|Absolute|Land area weighted',\n", - " 'RIME|cdd|Hazard|Absolute|Population weighted',\n", - " 'RIME|cdd|Hazard|Risk score|Population weighted']" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "expandeddGMT.variable" ] @@ -4594,7 +1434,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.8" + "version": "3.10.12" } }, "nbformat": 4, diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index a72c85c..0000000 --- a/setup.cfg +++ /dev/null @@ -1,48 +0,0 @@ -[metadata] -name = rime -author = Edward Byers, Mia Werning -author_email = byers@iiasa.ac.at -description = Rapid Impact Model Emulator -long_description_content_type = text/markdown -long_description = file:README.md -url = https://www.iiasa.ac.at -license = GNU CPL v3 -classifiers = - Development Status :: 2 - Pre-Alpha - Intended Audience :: Science/Research - Topic :: Scientific/Engineering - License :: OSI Approved :: GNU CPL v3 - Natural Language :: English - Programming Language :: Python :: 3 - -[options] -packages = rime -include_package_data = True -python_requires = >=3.10, <3.12 - -# To check this, pip install pipreqs, then run pipreqs . in the rime directory -install_requires = - alive-progress>=3.1.5 - dask>2022.7.0 - holoviews~=1.17.1 - hvplot~=0.9.0 - matplotlib~=3.5.2 - numpy~=1.23.5 - pandas>1.5.2 - pyam_iamc>1.7 - PyYAML~=6.0 - rich~=13.6.0 - scipy>1.9.3 - seaborn~=0.13.0 - xarray~=2022.11.0 - -setup_requires = - setuptools >= 41 - setuptools_scm - -[options.extras_require] -tests = - pytest -doc = - sphinx - sphinx_rtd_theme \ No newline at end of file diff --git a/setup.py b/setup.py deleted file mode 100644 index d5d43d7..0000000 --- a/setup.py +++ /dev/null @@ -1,3 +0,0 @@ -from setuptools import setup - -setup(use_scm_version=True)